]> git.pld-linux.org Git - packages/crossarm-gcc.git/blame - crossarm-lpc210x-crt0.s
- startup file for LPC210x based embedded systems.
[packages/crossarm-gcc.git] / crossarm-lpc210x-crt0.s
CommitLineData
1f0e1264
PS
1
2 .set SYSTEM_MODE, 0x1F
3 .set UNDEFINED_MODE, 0x1B
4 .set ABORT_MODE, 0x17
5 .set SUPERVISOR_MODE, 0x13
6 .set IRQ_MODE, 0x12
7 .set FIQ_MODE, 0x11
8 .set USER_MODE, 0x10
9
10 .text
11 .arm
12 .org 0
13 .align 0
14
15# exception vectors
16
17 b reset_handler
18 ldr pc, undefined_instruction_handler_addr
19 ldr pc, software_interrupt_handler_addr
20 ldr pc, prefetch_abort_handler_addr
21 ldr pc, data_abort_handler_addr
22 ldr pc, endless_loop /* ARM-reserved vector */
23 ldr pc, irq_handler_addr
24 ldr pc, fiq_handler_addr
25
26undefined_instruction_handler_addr: .long undefined_instruction_handler
27software_interrupt_handler_addr: .long software_interrupt_handler
28prefetch_abort_handler_addr: .long prefetch_abort_handler
29data_abort_handler_addr: .long data_abort_handler
30irq_handler_addr: .long irq_handler
31fiq_handler_addr: .long fiq_handler
32
33.global reset_handler
34reset_handler:
35
36 msr cpsr_c, #UNDEFINED_MODE
37 ldr sp, =__UNDEFINED_SP__
38 msr cpsr_c, #ABORT_MODE
39 ldr sp, =__ABORT_SP__
40 msr cpsr_c, #IRQ_MODE
41 ldr sp, =__IRQ_SP__
42 msr cpsr_c, #FIQ_MODE
43 ldr sp, =__FIQ_SP__
44 msr cpsr_c, #SUPERVISOR_MODE
45 ldr sp, =__SUPERVISOR_SP__
46
47# setup a default stack limit (when compiled with "-mapcs-stack-check").
48# sub sl, sp, #__USER_STACK_SIZE__
49
50# relocate .data(rw) section (copy from FLASH to RAM).
51
52 ldr r1, =__text_end__
53 ldr r2, =__data_start__
54 ldr r3, =__data_end__
55
56reset_handler_L01:
57
58 cmp r2, r3
59 ldrlo r0, [r1], #4
60 strlo r0, [r2], #4
61 blo reset_handler_L01
62
63# clear .bss(rw) section.
64
65 mov r0, #0
66 ldr r1, =__bss_start__
67 ldr r2, =__bss_end__
68
69reset_handler_L02:
70
71 cmp r1, r2
72 strlo r0, [r1], #4
73 blo reset_handler_L02
74
75# set up arguments to main() and call.
76
77 mov r0, #0
78 mov r1, #0
79 bl main
80
81.global endless_loop
82endless_loop:
83 b endless_loop
84
85 .end
This page took 0.110014 seconds and 4 git commands to generate.