forked from Imagelibrary/rtems
bsps/powerpc: Add load section for .nocache
This commit is contained in:
@@ -22,5 +22,6 @@ REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_WORK", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_STACK", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
|
||||
|
||||
INCLUDE linkcmds.mpc55xx
|
||||
|
||||
@@ -22,5 +22,6 @@ REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_WORK", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_STACK", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
|
||||
|
||||
INCLUDE linkcmds.mpc55xx
|
||||
|
||||
@@ -22,5 +22,6 @@ REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_WORK", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_STACK", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", ROM);
|
||||
|
||||
INCLUDE linkcmds.mpc55xx
|
||||
|
||||
@@ -31,5 +31,6 @@ REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_WORK", RAM_EXT);
|
||||
REGION_ALIAS ("REGION_STACK", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
|
||||
|
||||
INCLUDE linkcmds.mpc55xx
|
||||
|
||||
@@ -27,5 +27,6 @@ REGION_ALIAS ("REGION_RWEXTRA", RAM_0);
|
||||
REGION_ALIAS ("REGION_WORK", RAM_1);
|
||||
REGION_ALIAS ("REGION_STACK", RAM_1);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
|
||||
|
||||
INCLUDE linkcmds.mpc55xx
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008-2011 embedded brains GmbH. All rights reserved.
|
||||
* Copyright (c) 2008-2012 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
@@ -23,6 +23,14 @@
|
||||
#include <bsp.h>
|
||||
#include <bsp/start.h>
|
||||
#include <bsp/mpc55xx-config.h>
|
||||
#include <bsp/linker-symbols.h>
|
||||
|
||||
/* This function is defined in start.S */
|
||||
BSP_START_TEXT_SECTION void mpc55xx_start_load_section(
|
||||
void *dst,
|
||||
const void *src,
|
||||
size_t n
|
||||
);
|
||||
|
||||
static BSP_START_TEXT_SECTION void mpc55xx_start_mmu(void)
|
||||
{
|
||||
@@ -53,6 +61,19 @@ static BSP_START_TEXT_SECTION void mpc55xx_start_internal_ram(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static BSP_START_TEXT_SECTION void mpc55xx_start_load_nocache_section(void)
|
||||
{
|
||||
mpc55xx_start_load_section(
|
||||
bsp_section_nocache_begin,
|
||||
bsp_section_nocache_load_begin,
|
||||
(size_t) bsp_section_nocache_size
|
||||
);
|
||||
rtems_cache_flush_multiple_data_lines(
|
||||
bsp_section_nocache_begin,
|
||||
(size_t) bsp_section_nocache_size
|
||||
);
|
||||
}
|
||||
|
||||
static BSP_START_TEXT_SECTION void mpc55xx_start_mode_change(void)
|
||||
{
|
||||
#ifdef MPC55XX_HAS_MODE_CONTROL
|
||||
@@ -167,6 +188,7 @@ BSP_START_TEXT_SECTION void mpc55xx_start_early(void)
|
||||
mpc55xx_start_cache();
|
||||
#endif
|
||||
mpc55xx_start_internal_ram();
|
||||
mpc55xx_start_load_nocache_section();
|
||||
mpc55xx_start_mmu();
|
||||
mpc55xx_start_mode_change();
|
||||
mpc55xx_start_siu();
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008-2011 embedded brains GmbH. All rights reserved.
|
||||
* Copyright (c) 2008-2012 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
#include <bspopts.h>
|
||||
|
||||
#include <bsp/linker-symbols.h>
|
||||
#include <libcpu/powerpc-utility.h>
|
||||
|
||||
#if MPC55XX_CHIP_TYPE / 10 != 551
|
||||
@@ -41,20 +41,12 @@
|
||||
.extern __eabi
|
||||
.extern boot_card
|
||||
.extern bsp_ram_start
|
||||
.extern bsp_section_data_begin
|
||||
.extern bsp_section_data_load_begin
|
||||
.extern bsp_section_data_size
|
||||
.extern bsp_section_fast_data_begin
|
||||
.extern bsp_section_fast_data_load_begin
|
||||
.extern bsp_section_fast_data_size
|
||||
.extern bsp_section_fast_text_begin
|
||||
.extern bsp_section_fast_text_load_begin
|
||||
.extern bsp_section_fast_text_size
|
||||
.extern mpc55xx_start_config_mmu_early
|
||||
.extern mpc55xx_start_config_mmu_early_count
|
||||
.extern mpc55xx_start_early
|
||||
|
||||
.globl _start
|
||||
.globl mpc55xx_start_load_section
|
||||
.globl mpc55xx_start_mmu_apply_config
|
||||
|
||||
#ifdef MPC55XX_BOOTFLAGS
|
||||
@@ -225,15 +217,15 @@ zero_intermediate_stack_loop:
|
||||
LA r3, bsp_section_fast_text_begin
|
||||
LA r4, bsp_section_fast_text_load_begin
|
||||
LA r5, bsp_section_fast_text_size
|
||||
bl load_section
|
||||
bl mpc55xx_start_load_section
|
||||
LA r3, bsp_section_fast_data_begin
|
||||
LA r4, bsp_section_fast_data_load_begin
|
||||
LA r5, bsp_section_fast_data_size
|
||||
bl load_section
|
||||
bl mpc55xx_start_load_section
|
||||
LA r3, bsp_section_data_begin
|
||||
LA r4, bsp_section_data_load_begin
|
||||
LA r5, bsp_section_data_size
|
||||
bl load_section
|
||||
bl mpc55xx_start_load_section
|
||||
|
||||
/* Set up EABI and SYSV environment */
|
||||
bl __eabi
|
||||
@@ -270,7 +262,7 @@ mmu_init_loop:
|
||||
bdnz mmu_init_loop
|
||||
blr
|
||||
|
||||
load_section:
|
||||
mpc55xx_start_load_section:
|
||||
cmpw cr7, r3, r4
|
||||
beqlr cr7
|
||||
b memcpy
|
||||
|
||||
@@ -25,7 +25,8 @@ REGION_ALIAS ("REGION_BSS", HIGH);
|
||||
REGION_ALIAS ("REGION_RWEXTRA", HIGH);
|
||||
REGION_ALIAS ("REGION_WORK", HIGH);
|
||||
REGION_ALIAS ("REGION_STACK", HIGH);
|
||||
REGION_ALIAS ("REGION_NOCACHE", HIGH);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
|
||||
|
||||
bsp_section_robarrier_align = 0x1000000;
|
||||
bsp_section_rwbarrier_align = 0x1000000;
|
||||
|
||||
@@ -24,7 +24,8 @@ REGION_ALIAS ("REGION_BSS", RAM);
|
||||
REGION_ALIAS ("REGION_RWEXTRA", RAM);
|
||||
REGION_ALIAS ("REGION_WORK", RAM);
|
||||
REGION_ALIAS ("REGION_STACK", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
|
||||
|
||||
bsp_section_robarrier_align = 0x1000000;
|
||||
bsp_section_rwbarrier_align = 0x1000000;
|
||||
|
||||
@@ -25,7 +25,8 @@ REGION_ALIAS ("REGION_BSS", HIGH);
|
||||
REGION_ALIAS ("REGION_RWEXTRA", HIGH);
|
||||
REGION_ALIAS ("REGION_WORK", HIGH);
|
||||
REGION_ALIAS ("REGION_STACK", HIGH);
|
||||
REGION_ALIAS ("REGION_NOCACHE", HIGH);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
|
||||
|
||||
bsp_section_robarrier_align = 0x1000000;
|
||||
bsp_section_rwbarrier_align = 0x1000000;
|
||||
|
||||
@@ -96,6 +96,8 @@ LINKER_SYMBOL(bsp_section_stack_size)
|
||||
LINKER_SYMBOL(bsp_section_nocache_begin)
|
||||
LINKER_SYMBOL(bsp_section_nocache_end)
|
||||
LINKER_SYMBOL(bsp_section_nocache_size)
|
||||
LINKER_SYMBOL(bsp_section_nocache_load_begin)
|
||||
LINKER_SYMBOL(bsp_section_nocache_load_end)
|
||||
|
||||
#define BSP_FAST_TEXT_SECTION __attribute__((section(".bsp_fast_text")))
|
||||
|
||||
|
||||
@@ -328,8 +328,10 @@ SECTIONS {
|
||||
bsp_section_nocache_begin = .;
|
||||
*(.bsp_nocache)
|
||||
bsp_section_nocache_end = .;
|
||||
} > REGION_NOCACHE AT > REGION_NOCACHE
|
||||
} > REGION_NOCACHE AT > REGION_NOCACHE_LOAD
|
||||
bsp_section_nocache_size = bsp_section_nocache_end - bsp_section_nocache_begin;
|
||||
bsp_section_nocache_load_begin = LOADADDR (.nocache);
|
||||
bsp_section_nocache_load_end = bsp_section_nocache_load_begin + bsp_section_nocache_size;
|
||||
|
||||
/* FIXME */
|
||||
RamBase = ORIGIN (REGION_WORK);
|
||||
|
||||
@@ -18,6 +18,7 @@ REGION_ALIAS ("REGION_BSS", RAM);
|
||||
REGION_ALIAS ("REGION_RWEXTRA", RAM);
|
||||
REGION_ALIAS ("REGION_WORK", RAM);
|
||||
REGION_ALIAS ("REGION_STACK", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", RAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
|
||||
|
||||
INCLUDE linkcmds.base
|
||||
|
||||
Reference in New Issue
Block a user