summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/crt0.S
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/crt0.S')
-rw-r--r--firmware/target/arm/imx233/crt0.S37
1 files changed, 33 insertions, 4 deletions
diff --git a/firmware/target/arm/imx233/crt0.S b/firmware/target/arm/imx233/crt0.S
index 836c3e88cb..e233d439e0 100644
--- a/firmware/target/arm/imx233/crt0.S
+++ b/firmware/target/arm/imx233/crt0.S
@@ -23,10 +23,8 @@
23 23
24.section .vectors,"ax",%progbits 24.section .vectors,"ax",%progbits
25.code 32 25.code 32
26.global start
27start:
28 /* most handlers are in DRAM which is too far away for a relative jump */ 26 /* most handlers are in DRAM which is too far away for a relative jump */
29 ldr pc, =newstart 27 ldr pc, =start
30 ldr pc, =undef_instr_handler 28 ldr pc, =undef_instr_handler
31 ldr pc, =software_int_handler 29 ldr pc, =software_int_handler
32 ldr pc, =prefetch_abort_handler 30 ldr pc, =prefetch_abort_handler
@@ -36,8 +34,39 @@ start:
36 ldr pc, =fiq_handler 34 ldr pc, =fiq_handler
37 35
38.text 36.text
39newstart: 37.global start
38start:
40 msr cpsr_c, #0xd3 /* enter supervisor mode, disable IRQ/FIQ */ 39 msr cpsr_c, #0xd3 /* enter supervisor mode, disable IRQ/FIQ */
40 /* Zero out IBSS */
41 ldr r2, =_iedata
42 ldr r3, =_iend
43 mov r4, #0
441:
45 cmp r3, r2
46 strhi r4, [r2], #4
47 bhi 1b
48
49 /* Copy the IRAM */
50 /* must be done before bss is zeroed */
51 ldr r2, =_iramcopy
52 ldr r3, =_iramstart
53 ldr r4, =_iramend
541:
55 cmp r4, r3
56 ldrhi r5, [r2], #4
57 strhi r5, [r3], #4
58 bhi 1b
59
60 /* Initialise bss section to zero */
61 ldr r2, =_edata
62 ldr r3, =_end
63 mov r4, #0
641:
65 cmp r3, r2
66 strhi r4, [r2], #4
67 bhi 1b
68
69
41 /* Set up some stack and munge it with 0xdeadbeef */ 70 /* Set up some stack and munge it with 0xdeadbeef */
42 ldr sp, =stackend 71 ldr sp, =stackend
43 ldr r2, =stackbegin 72 ldr r2, =stackbegin