diff options
| author | Rafaël Carré <rafael.carre@gmail.com> | 2010-03-17 05:02:42 +0000 |
|---|---|---|
| committer | Rafaël Carré <rafael.carre@gmail.com> | 2010-03-17 05:02:42 +0000 |
| commit | ab7365610b2a1b2b866a4b6bf5aaaec703678b83 (patch) | |
| tree | 888cfa83a65e50589b7dc25b5b7470ce8c4ca4be | |
| parent | bda2e6d6755847738bc14b47a942751aff0a19d8 (diff) | |
| download | rockbox-ab7365610b2a1b2b866a4b6bf5aaaec703678b83.zip rockbox-ab7365610b2a1b2b866a4b6bf5aaaec703678b83.tar.gz rockbox-ab7365610b2a1b2b866a4b6bf5aaaec703678b83.tar.bz2 rockbox-ab7365610b2a1b2b866a4b6bf5aaaec703678b83.tar.xz | |
as3525*: revert r25198 and inline memory_init in crt0.S
We do not need a stack pointer at this step, and we are sure to not use
memory not initialized yet (like bss)
Fixes FS#11114 (tested on Fuze)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25229 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/target/arm/as3525/system-as3525.c | 20 | ||||
| -rw-r--r-- | firmware/target/arm/crt0.S | 49 |
2 files changed, 47 insertions, 22 deletions
diff --git a/firmware/target/arm/as3525/system-as3525.c b/firmware/target/arm/as3525/system-as3525.c index 16c89b9..4bf5cd3 100644 --- a/firmware/target/arm/as3525/system-as3525.c +++ b/firmware/target/arm/as3525/system-as3525.c @@ -233,26 +233,6 @@ static void sdram_init(void) MPMC_DYNAMIC_CONFIG_0 |= (1<<19); /* buffer enable */ } -#else /* !BOOTLOADER */ -void memory_init(void) -{ - ttb_init(); - /* map every region to itself, uncached */ - map_section(0, 0, 4096, CACHE_NONE); - - /* IRAM */ - map_section(0, IRAM_ORIG, 1, CACHE_ALL); - map_section(0, UNCACHED_ADDR(IRAM_ORIG), 1, CACHE_NONE); - - /* DRAM */ - map_section(0x30000000, DRAM_ORIG, MEMORYSIZE, CACHE_ALL); - map_section(0x30000000, UNCACHED_ADDR(DRAM_ORIG), MEMORYSIZE, CACHE_NONE); - - /* map 1st mbyte of DRAM at 0x0 to have exception vectors available */ - map_section(0x30000000, 0, 1, CACHE_ALL); - - enable_mmu(); -} #endif /* BOOTLOADER */ void system_init(void) diff --git a/firmware/target/arm/crt0.S b/firmware/target/arm/crt0.S index 5e65738..5d07d34 100644 --- a/firmware/target/arm/crt0.S +++ b/firmware/target/arm/crt0.S @@ -58,9 +58,54 @@ newstart: msr cpsr_c, #0xd3 /* enter supervisor mode, disable IRQ/FIQ */ #if (CONFIG_CPU==AS3525 || CONFIG_CPU==AS3525v2) && !defined(BOOTLOADER) + +#define CACHE_NONE 0 +#define CACHE_ALL 0x0C +#define UNCACHED_ADDR(a) (a + 0x10000000) + /* Setup MMU : has to be done before accessing IRAM ! */ - ldr sp, =stackend - bl memory_init + + bl ttb_init + + mov r0, #0 @ physical address + mov r1, #0 @ virtual address + mov r2, #0x1000 @ size (all memory) + mov r3, #CACHE_NONE + bl map_section + + mov r0, #0 @ physical address + mov r1, #IRAM_ORIG @ virtual address + mov r2, #1 @ size : 1MB + mov r3, #CACHE_ALL + bl map_section + + mov r0, #0 @ physical address + ldr r1, =UNCACHED_ADDR(IRAM_ORIG) @ virtual address + mov r2, #1 @ size : 1MB + mov r3, #CACHE_NONE + bl map_section + + mov r0, #0x30000000 @ physical address + mov r1, #DRAM_ORIG @ virtual address + mov r2, #MEMORYSIZE @ size + mov r3, #CACHE_ALL + bl map_section + + mov r0, #0x30000000 @ physical address + mov r1, #UNCACHED_ADDR(DRAM_ORIG) @ virtual address + mov r2, #MEMORYSIZE @ size + mov r3, #CACHE_NONE + bl map_section + + /* map 1st mbyte of DRAM at 0x0 to have exception vectors available */ + + mov r0, #0x30000000 @ physical address + mov r1, #0 @ virtual address + mov r2, #1 @ size + mov r3, #CACHE_ALL + bl map_section + + bl enable_mmu /* Zero out IBSS */ ldr r2, =_iedata |