]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/vector_functions.s
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_NXP / TARGET_LPC23XX / TOOLCHAIN_ARM_STD / vector_functions.s
1 ;/* mbed Microcontroller Library - InterruptIn
2 ; * Copyright (c) 2006-2009 ARM Limited. All rights reserved.
3 ; */
4  
5 #line 1 "vector_functions.s"
6 ;
7 ;
8 ;
9
10 #line 1 "vector_defns.h"
11
12
13
14  
15
16
17
18  
19
20 #line 21 "vector_defns.h"
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #line 47 "vector_defns.h"
40
41
42 #line 58 "vector_defns.h"
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 #line 6 "vector_functions.s"
62
63
64         AREA    VECFUNCS, CODE, READONLY
65         ARM
66         PRESERVE8
67
68
69
70
71
72         EXPORT __mbed_fiq [WEAK]
73         EXPORT __mbed_undef [WEAK]
74         EXPORT __mbed_prefetch_abort [WEAK]
75         EXPORT __mbed_data_abort [WEAK]
76         EXPORT __mbed_irq [WEAK]
77         EXPORT __mbed_swi [WEAK]
78         EXPORT __mbed_dcc_irq [WEAK]
79         EXPORT __mbed_reset [WEAK]
80         IMPORT __mbed_init_realmonitor
81
82 ;
83 ;
84 __mbed_fiq
85         B       __mbed_fiq
86
87 ;
88 ;
89 __mbed_undef
90         LDR     PC, =0x7fffffa0
91
92 ;
93 ;
94 __mbed_prefetch_abort
95         LDR     PC, =0x7fffffb0
96
97 ;
98 ;
99 __mbed_data_abort
100         LDR     PC, =0x7fffffc0
101
102 ;
103 ;
104 ;
105 ;
106 ;
107 ;
108 ;
109 ;
110 ;
111 __mbed_irq
112         ;
113         MSR     CPSR_c, #0x1F:OR:0x80:OR:0x40
114                 
115         ;
116         STMDB   sp!, {r0-r3,r12,lr}    
117
118         ;
119         MOV     r0, #0xFFFFFF00
120         LDR     r0, [r0]        
121
122         ;
123         MOV     lr, pc       
124         BX      r0           
125                                                         
126         ;
127         MOV     r0, #0xFFFFFF00
128         STR     r0, [r0]                        ;
129                                 
130         ;
131         LDMFD   sp!,{r0-r3,r12,lr}
132
133         ;
134         MSR     CPSR_c, #0x12:OR:0x80:OR:0x40
135
136         ;
137         SUBS    pc, lr, #4 
138
139 ;
140 ;
141 ;
142 ;
143 __mbed_swi
144         ;
145         ;
146         STMFD   sp!, {a4, r4, ip, lr}
147
148         ;
149         LDR     r4, =0x40000040
150
151         ;
152         ;
153         LDR     a4, =0x00940000
154         LDR     PC, =0x7ffff820                         
155
156 ;
157 ;
158 ;
159 ;
160 __mbed_dcc_irq
161
162         ;
163                         
164         ;
165         LDMFD    sp!,{r0-r3,r12,lr}
166
167         ;
168         MSR     CPSR_c, #0x12:OR:0x80:OR:0x40
169
170         ;
171                                 
172         ;
173         SUB     lr, lr, #4              ;
174         STMFD   sp!, {ip,lr}            ;
175                         
176         ;
177         LDR     LR, =0xfffff000
178         STR     LR, [LR, #0xf00]
179                         
180         ;
181         ;
182         ;
183         ;
184         LDR     PC, =0x7fffffe0                  
185
186 ;
187 ; __mbed_reset is called after reset
188 ; we setup the stacks and realmonitor, then call Reset_Handler like on M3
189
190 ; Reset Handler
191
192 Reset_Handler   PROC
193                 EXPORT  Reset_Handler             [WEAK]
194                 IMPORT  SystemInit
195                 IMPORT  __main
196                 LDR     R0, =SystemInit
197                 MOV     LR, PC       
198                 BX      R0
199                 LDR     R0, =__main
200                 BX      R0
201                 ENDP
202
203 __mbed_reset
204
205         ;
206
207         LDR     R0, =(0x40000000 + 0x8000)
208
209         ;
210         MSR     CPSR_c, #0x1B:OR:0x80:OR:0x40
211         MOV     SP, R0
212         SUB     R0, R0, #0x00000040
213
214         ;
215         MSR     CPSR_c, #0x17:OR:0x80:OR:0x40
216         MOV     SP, R0
217         SUB     R0, R0, #0x00000040
218
219         ;
220         MSR     CPSR_c, #0x11:OR:0x80:OR:0x40
221         MOV     SP, R0
222         SUB     R0, R0, #0x00000000
223
224         ;
225         MSR     CPSR_c, #0x12:OR:0x80:OR:0x40
226         MOV     SP, R0
227         SUB     R0, R0, #0x00000040
228
229         ;
230         MSR     CPSR_c, #0x13:OR:0x80:OR:0x40
231         MOV     SP, R0
232         SUB     R0, R0, #0x00000040
233
234         ;
235         MSR     CPSR_c, #0x10
236         MOV     SP, R0
237
238         ;
239         LDR     R0, =__mbed_init_realmonitor
240         MOV     LR, PC       
241         BX      R0           
242         
243         ;
244         LDR     R0, =Reset_Handler
245         BX      R0
246
247         
248         END