]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CS/vector_functions.s
Merge remote-tracking branch 'tmk/master'
[max/tmk_keyboard.git] / tmk_core / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_NXP / TARGET_LPC23XX / TOOLCHAIN_GCC_CS / vector_functions.s
1 # 1 "vector_functions.s"
2 # 1 "<built-in>"
3 # 1 "<command line>"
4 # 1 "vector_functions.s"
5 ;
6 ;
7 ;
8
9 # 1 "vector_defns.h" 1
10 # 6 "vector_functions.s" 2
11
12
13
14
15
16
17         .section VECFUNCS, "ax"
18         .arm
19
20
21         .weak __mbed_fiq
22         .weak __mbed_undef
23         .weak __mbed_prefetch_abort
24         .weak __mbed_data_abort
25         .weak __mbed_irq
26         .weak __mbed_swi
27         .weak __mbed_dcc_irq
28         .weak __mbed_reset
29         .global __mbed_init_realmonitor
30         .global __mbed_init
31
32 ;
33 ;
34 __mbed_fiq:
35         B __mbed_fiq
36
37 ;
38 ;
39 __mbed_undef:
40         LDR PC, =0x7fffffa0
41
42 ;
43 ;
44 __mbed_prefetch_abort:
45         LDR PC, =0x7fffffb0
46
47 ;
48 ;
49 __mbed_data_abort:
50         LDR PC, =0x7fffffc0
51
52 ;
53 ;
54 ;
55 ;
56 ;
57 ;
58 ;
59 ;
60 ;
61 __mbed_irq:
62         ;
63         MSR CPSR_c, #0x1F|0x80|0x40
64
65         ;
66         STMDB sp!, {r0-r3,r12,lr}
67
68         ;
69         MOV r0, #0xFFFFFF00
70         LDR r0, [r0]
71
72         ;
73         MOV lr, pc
74         BX r0
75
76         ;
77         MOV r0, #0xFFFFFF00
78         STR r0, [r0] ;
79
80         ;
81         LDMFD sp!,{r0-r3,r12,lr}
82
83         ;
84         MSR CPSR_c, #0x12|0x80|0x40
85
86         ;
87         SUBS pc, lr, #4
88
89 ;
90 ;
91 ;
92 ;
93 __mbed_swi:
94         ;
95         ;
96         STMFD sp!, {a4, r4, ip, lr}
97
98         ;
99         LDR r4, =0x40000040
100
101         ;
102         ;
103         LDR a4, =0x00940000
104         LDR PC, =0x7ffff820
105
106 ;
107 ;
108 ;
109 ;
110 __mbed_dcc_irq:
111
112         ;
113
114         ;
115         LDMFD sp!,{r0-r3,r12,lr}
116
117         ;
118         MSR CPSR_c, #0x12|0x80|0x40
119
120         ;
121
122         ;
123         SUB lr, lr, #4 ;
124         STMFD sp!, {ip,lr} ;
125
126         ;
127         LDR LR, =0xfffff000
128         STR LR, [LR, #0xf00]
129
130         ;
131         ;
132         ;
133         ;
134         LDR PC, =0x7fffffe0
135
136 ;
137 ;
138 __mbed_reset:
139
140         ;
141
142         LDR R0, =(0x40000000 + 0x8000)
143
144         ;
145         MSR CPSR_c, #0x1B|0x80|0x40
146         MOV SP, R0
147         SUB R0, R0, #0x00000040
148
149         ;
150         MSR CPSR_c, #0x17|0x80|0x40
151         MOV SP, R0
152         SUB R0, R0, #0x00000040
153
154         ;
155         MSR CPSR_c, #0x11|0x80|0x40
156         MOV SP, R0
157         SUB R0, R0, #0x00000000
158
159         ;
160         MSR CPSR_c, #0x12|0x80|0x40
161         MOV SP, R0
162         SUB R0, R0, #0x00000040
163
164         ;
165         MSR CPSR_c, #0x13|0x80|0x40
166         MOV SP, R0
167         SUB R0, R0, #0x00000040
168
169         ;
170         MSR CPSR_c, #0x10
171         MOV SP, R0
172
173         ;
174         LDR R0, =__mbed_init_realmonitor
175         MOV LR, PC
176         BX R0
177
178         ;
179         LDR R0, =__mbed_init
180         BX R0