From 678b6d02aca2fab258c3101a05331bd3b6367a62 Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Tue, 18 Nov 2008 17:15:56 +0000 Subject: Sansa AMS: Use IRAM (in app linker script and crt0.S) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19137 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/crt0.S | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'firmware/target/arm/crt0.S') diff --git a/firmware/target/arm/crt0.S b/firmware/target/arm/crt0.S index 829004193f..35d0aecccb 100644 --- a/firmware/target/arm/crt0.S +++ b/firmware/target/arm/crt0.S @@ -50,22 +50,43 @@ start: .word irq_handler .word fiq_handler -vectors_end: +_vectorsend: .text newstart: msr cpsr_c, #0xd3 /* enter supervisor mode, disable IRQ/FIQ */ -#if CONFIG_CPU==AS3525 && !defined(BOOTLOADER) /* relocate vectors */ +#if CONFIG_CPU==AS3525 && !defined(BOOTLOADER) + + /* relocate vectors */ mov r1, #0 @ destination - ldr r2, =start @ source - ldr r3, =vectors_end @ end + ldr r2, =_vectorscopy @ source + ldr r3, =_vectorsend @ end 1: ldr r0, [r2], #4 str r0, [r1], #4 - cmp r3, r2 + cmp r1, r3 bne 1b + + /* Zero out IBSS */ + ldr r2, =_iedata + ldr r3, =_iend + mov r4, #0 +1: + cmp r3, r2 + strhi r4, [r2], #4 + bhi 1b + + /* Copy the IRAM */ + ldr r2, =_iramcopy + ldr r3, =_iramstart + ldr r4, =_iramend +1: + cmp r4, r3 + ldrhi r5, [r2], #4 + strhi r5, [r3], #4 + bhi 1b #endif /* Initialise bss section to zero */ @@ -102,6 +123,7 @@ newstart: /* Switch back to supervisor mode */ msr cpsr_c, #0xd3 + bl main -- cgit v1.2.3