summaryrefslogtreecommitdiff
path: root/bsp/xplorer4330/libraries/Device/NXP/LPC43xx/Source/Templates/IAR/startup_LPC43xx.s
blob: 211a67d700c44b58224f9126c7bc29b702d611f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
;/*****************************************************************************
; * @file:    startup_LPC18xx.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; *           for the NXP LPC18xx Device Series
; * @version: V1.00
; * @date:    24. May. 2011
; *----------------------------------------------------------------------------
; *
; * Copyright (C) 2010 ARM Limited. All rights reserved.
; *
; * ARM Limited (ARM) is supplying this software for use with Cortex-Mx
; * processor based microcontrollers.  This file can be freely distributed
; * within development tools that are supporting such ARM based processors.
; *
; * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
; *
; ******************************************************************************/


;
; The modules in this file are included in the libraries, and may be replaced
; by any user-defined modules that define the PUBLIC symbol _program_start or
; a user defined start symbol.
; To override the cstartup defined in the library, simply add your modified
; version to the workbench project.
;
; The vector table is normally located at address 0.
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
; The name "__vector_table" has special meaning for C-SPY:
; it is where the SP start value is found, and the NVIC vector
; table register (VTOR) is initialized to this address if != 0.
;
; Cortex-M version
;

        MODULE  ?cstartup

        ;; Forward declaration of sections.
        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        EXTERN  __iar_program_start
        EXTERN  SystemInit
        PUBLIC  __vector_table
        PUBLIC  __vector_table_0x1c
        PUBLIC  __Vectors
        PUBLIC  __Vectors_End
        PUBLIC  __Vectors_Size

        DATA

Sign_Value		EQU		0x5A5A5A5A

__vector_table
        DCD     sfe(CSTACK)
        DCD     Reset_Handler

        DCD     NMI_Handler
        DCD     HardFault_Handler
        DCD     MemManage_Handler
        DCD     BusFault_Handler
        DCD     UsageFault_Handler
__vector_table_0x1c
        DCD     Sign_Value
        DCD     0
        DCD     0
        DCD     0
        DCD     SVC_Handler
        DCD     DebugMon_Handler
        DCD     0
        DCD     PendSV_Handler
        DCD     SysTick_Handler

        ; External Interrupts
        DCD		DAC_IRQHandler	 			; 16 D/A Converter
	DCD		0					; 17 Event Router
        DCD		DMA_IRQHandler				; 18 General Purpose DMA
        DCD		0				        ; 19 Reserved
        DCD		0				        ; 20 Reserved
        DCD		ETH_IRQHandler				; 21 Ethernet
        DCD		SDIO_IRQHandler				; 22 SD/MMC
        DCD		LCD_IRQHandler				; 23 LCD
        DCD		USB0_IRQHandler				; 24 USB0
        DCD		USB1_IRQHandler				; 25 USB1
        DCD		SCT_IRQHandler				; 26 State Configurable Timer
        DCD		RIT_IRQHandler				; 27 Repetitive Interrupt Timer
        DCD		TIMER0_IRQHandler			; 28 Timer0
        DCD		TIMER1_IRQHandler			; 29 Timer1
        DCD		TIMER2_IRQHandler			; 30 Timer2
        DCD		TIMER3_IRQHandler			; 31 Timer3
        DCD		MCPWM_IRQHandler			; 32 Motor Control PWM
        DCD		ADC0_IRQHandler				; 33 A/D Converter 0
        DCD		I2C0_IRQHandler				; 34 I2C0
        DCD		I2C1_IRQHandler				; 35 I2C1
        DCD		0					; 36 Reserved
        DCD		ADC1_IRQHandler				; 37 A/D Converter 1
        DCD		SSP0_IRQHandler				; 38 SSP0
        DCD		SSP1_IRQHandler				; 39 SSP1
        DCD		UART0_IRQHandler			; 40 UART0
        DCD		UART1_IRQHandler			; 41 UART1
        DCD		UART2_IRQHandler			; 42 UART2
        DCD		UART3_IRQHandler			; 43 UART3
	DCD		I2S0_IRQHandler				; 44 I2S0
	DCD		I2S1_IRQHandler				; 45 I2S1
	DCD		SPIFI_IRQHandler			; 46 SPI Flash Interface
	DCD		SGPIO_IRQHandler			; 47 SGPIO
	DCD		GPIO0_IRQHandler			; 48 GPIO0
	DCD		GPIO1_IRQHandler			; 49 GPIO1
	DCD		GPIO2_IRQHandler			; 50 GPIO2
	DCD		GPIO3_IRQHandler			; 51 GPIO3
	DCD		GPIO4_IRQHandler			; 52 GPIO4
	DCD		GPIO5_IRQHandler			; 53 GPIO5
	DCD		GPIO6_IRQHandler			; 54 GPIO6
	DCD		GPIO7_IRQHandler			; 55 GPIO7
	DCD		GINT0_IRQHandler			; 56 GINT0
	DCD		GINT1_IRQHandler			; 57 GINT1
	DCD		EVRT_IRQHandler				; 58 Event Router
	DCD		CAN1_IRQHandler				; 59 C_CAN1
	DCD		0							; 60 Reserved
	DCD		0       				; 61 VADC
	DCD		ATIMER_IRQHandler			; 62 ATIMER
	DCD		RTC_IRQHandler				; 63 RTC
	DCD		0							; 64 Reserved
	DCD		WDT_IRQHandler				; 65 WDT
	DCD		0       				; 66 M0s
	DCD		CAN0_IRQHandler				; 67 C_CAN0
	DCD 	QEI_IRQHandler				; 68 QEI
__Vectors_End

__Vectors       EQU   __vector_table
__Vectors_Size 	EQU 	__Vectors_End - __Vectors


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
        THUMB

        PUBWEAK Reset_Handler
        SECTION .text:CODE:REORDER(2)
Reset_Handler
        LDR     R0, =__iar_program_start
        BX      R0

        PUBWEAK NMI_Handler
        SECTION .text:CODE:REORDER(1)
NMI_Handler
        B NMI_Handler

        PUBWEAK HardFault_Handler
        SECTION .text:CODE:REORDER(1)
HardFault_Handler
        B HardFault_Handler

        PUBWEAK MemManage_Handler
        SECTION .text:CODE:REORDER(1)
MemManage_Handler
        B MemManage_Handler

        PUBWEAK BusFault_Handler
        SECTION .text:CODE:REORDER(1)
BusFault_Handler
        B BusFault_Handler

        PUBWEAK UsageFault_Handler
        SECTION .text:CODE:REORDER(1)
UsageFault_Handler
        B UsageFault_Handler

        PUBWEAK SVC_Handler
        SECTION .text:CODE:REORDER(1)
SVC_Handler
        B SVC_Handler

        PUBWEAK DebugMon_Handler
        SECTION .text:CODE:REORDER(1)
DebugMon_Handler
        B DebugMon_Handler

        PUBWEAK PendSV_Handler
        SECTION .text:CODE:REORDER(1)
PendSV_Handler
        B PendSV_Handler

        PUBWEAK SysTick_Handler
        SECTION .text:CODE:REORDER(1)
SysTick_Handler
        B SysTick_Handler

        PUBWEAK DAC_IRQHandler
        SECTION .text:CODE:REORDER(1)
DAC_IRQHandler
        B DAC_IRQHandler

        PUBWEAK EVRT_IRQHandler
        SECTION .text:CODE:REORDER(1)
EVRT_IRQHandler
        B EVRT_IRQHandler

        PUBWEAK DMA_IRQHandler
        SECTION .text:CODE:REORDER(1)
DMA_IRQHandler
        B DMA_IRQHandler

        PUBWEAK ETH_IRQHandler
        SECTION .text:CODE:REORDER(1)
ETH_IRQHandler
        B ETH_IRQHandler

        PUBWEAK SDIO_IRQHandler
        SECTION .text:CODE:REORDER(1)
SDIO_IRQHandler
        B SDIO_IRQHandler

        PUBWEAK LCD_IRQHandler
        SECTION .text:CODE:REORDER(1)
LCD_IRQHandler
        B LCD_IRQHandler

        PUBWEAK USB0_IRQHandler
        SECTION .text:CODE:REORDER(1)
USB0_IRQHandler
        B USB0_IRQHandler

        PUBWEAK USB1_IRQHandler
        SECTION .text:CODE:REORDER(1)
USB1_IRQHandler
        B USB1_IRQHandler

        PUBWEAK SCT_IRQHandler
        SECTION .text:CODE:REORDER(1)
SCT_IRQHandler
        B SCT_IRQHandler

        PUBWEAK RIT_IRQHandler
        SECTION .text:CODE:REORDER(1)
RIT_IRQHandler
        B RIT_IRQHandler

        PUBWEAK TIMER0_IRQHandler
        SECTION .text:CODE:REORDER(1)
TIMER0_IRQHandler
        B TIMER0_IRQHandler

        PUBWEAK TIMER1_IRQHandler
        SECTION .text:CODE:REORDER(1)
TIMER1_IRQHandler
        B TIMER1_IRQHandler

        PUBWEAK TIMER2_IRQHandler
        SECTION .text:CODE:REORDER(1)
TIMER2_IRQHandler
        B TIMER2_IRQHandler

        PUBWEAK TIMER3_IRQHandler
        SECTION .text:CODE:REORDER(1)
TIMER3_IRQHandler
        B TIMER3_IRQHandler

        PUBWEAK MCPWM_IRQHandler
        SECTION .text:CODE:REORDER(1)
MCPWM_IRQHandler
        B MCPWM_IRQHandler

        PUBWEAK ADC0_IRQHandler
        SECTION .text:CODE:REORDER(1)
ADC0_IRQHandler
        B ADC0_IRQHandler

        PUBWEAK I2C0_IRQHandler
        SECTION .text:CODE:REORDER(1)
I2C0_IRQHandler
        B I2C0_IRQHandler

        PUBWEAK I2C1_IRQHandler
        SECTION .text:CODE:REORDER(1)
I2C1_IRQHandler
        B I2C1_IRQHandler

        PUBWEAK ADC1_IRQHandler
        SECTION .text:CODE:REORDER(1)
ADC1_IRQHandler
        B ADC1_IRQHandler

        PUBWEAK SSP0_IRQHandler
        SECTION .text:CODE:REORDER(1)
SSP0_IRQHandler
        B SSP0_IRQHandler

        PUBWEAK SSP1_IRQHandler
        SECTION .text:CODE:REORDER(1)
SSP1_IRQHandler
        B SSP1_IRQHandler

        PUBWEAK UART0_IRQHandler
        SECTION .text:CODE:REORDER(1)
UART0_IRQHandler
        B UART0_IRQHandler

        PUBWEAK UART1_IRQHandler
        SECTION .text:CODE:REORDER(1)
UART1_IRQHandler
        B UART1_IRQHandler

        PUBWEAK UART2_IRQHandler
        SECTION .text:CODE:REORDER(1)
UART2_IRQHandler
        B UART2_IRQHandler

        PUBWEAK UART3_IRQHandler
        SECTION .text:CODE:REORDER(1)
UART3_IRQHandler
        B UART3_IRQHandler

        PUBWEAK I2S0_IRQHandler
        SECTION .text:CODE:REORDER(1)
I2S0_IRQHandler
        B I2S0_IRQHandler

        PUBWEAK I2S1_IRQHandler
        SECTION .text:CODE:REORDER(1)
I2S1_IRQHandler
        B I2S1_IRQHandler
        
        PUBWEAK AES_IRQHandler
        SECTION .text:CODE:REORDER(1)
AES_IRQHandler
        B AES_IRQHandler

        PUBWEAK SPIFI_IRQHandler
        SECTION .text:CODE:REORDER(1)
SPIFI_IRQHandler
        B SPIFI_IRQHandler

        PUBWEAK SGPIO_IRQHandler
        SECTION .text:CODE:REORDER(1)
SGPIO_IRQHandler
        B SGPIO_IRQHandler

        PUBWEAK GPIO0_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO0_IRQHandler
        B GPIO0_IRQHandler

        PUBWEAK GPIO1_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO1_IRQHandler
        B GPIO1_IRQHandler
        
        PUBWEAK GPIO2_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO2_IRQHandler
        B GPIO2_IRQHandler
        
        PUBWEAK GPIO3_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO3_IRQHandler
        B GPIO3_IRQHandler
        
        PUBWEAK GPIO4_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO4_IRQHandler
        B GPIO4_IRQHandler
        
        PUBWEAK GPIO5_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO5_IRQHandler
        B GPIO5_IRQHandler
        
        PUBWEAK GPIO6_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO6_IRQHandler
        B GPIO6_IRQHandler
        
        PUBWEAK GPIO7_IRQHandler
        SECTION .text:CODE:REORDER(1)
GPIO7_IRQHandler
        B GPIO7_IRQHandler
        
        PUBWEAK GINT0_IRQHandler
        SECTION .text:CODE:REORDER(1)
GINT0_IRQHandler
        B GINT0_IRQHandler
        
        PUBWEAK GINT1_IRQHandler
        SECTION .text:CODE:REORDER(1)
GINT1_IRQHandler
        B GINT1_IRQHandler
        
        PUBWEAK CAN1_IRQHandler
        SECTION .text:CODE:REORDER(1)
CAN1_IRQHandler
        B CAN1_IRQHandler
        
        PUBWEAK ATIMER_IRQHandler
        SECTION .text:CODE:REORDER(1)
ATIMER_IRQHandler
        B ATIMER_IRQHandler
        
        PUBWEAK RTC_IRQHandler
        SECTION .text:CODE:REORDER(1)
RTC_IRQHandler
        B RTC_IRQHandler
        
        PUBWEAK WDT_IRQHandler
        SECTION .text:CODE:REORDER(1)
WDT_IRQHandler
        B WDT_IRQHandler
        
        PUBWEAK CAN0_IRQHandler
        SECTION .text:CODE:REORDER(1)
CAN0_IRQHandler
        B CAN0_IRQHandler
        
        PUBWEAK QEI_IRQHandler
        SECTION .text:CODE:REORDER(1)
QEI_IRQHandler
        B QEI_IRQHandler
        
        PUBWEAK getPC
        SECTION .text:CODE:REORDER(2)
getPC
      MOV   R0,LR
      BX    LR        
        END