summaryrefslogtreecommitdiff
path: root/bsp/xplorer4330/libraries/Device/NXP/LPC43xx/Source/Templates/GCC/startup_LPC43xx.s
blob: 179be6ef25a78b1caa0b3aeebc7e39a05ca9cbcb (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
/*****************************************************************************/
/* startup_LPC43xx.s: Startup file for LPC43xx device series                 */
/*****************************************************************************/
/* Version: CodeSourcery Sourcery G++ Lite (with CS3)                        */
/*****************************************************************************/

	.syntax unified
	.cpu cortex-m3
	.fpu softvfp
	.thumb
	
	.word  _sidata
	.word  _sdata
	.word  _edata
	.word  _sbss
	.word  _ebss


    .equ    Sign_Value, 0x5A5A5A5A

/* Vector Table */

    .section ".interrupt_vector"
    .globl  __interrupt_vector
    .type   __interrupt_vector, %function

__interrupt_vector:
    .long   _estack                 /* Top of Stack                 */
    .long   Reset_Handler               /* Reset Handler                */
    .long   NMI_Handler                 /* NMI Handler                  */
    .long   HardFault_Handler           /* Hard Fault Handler           */
    .long   MemManage_Handler           /* MPU Fault Handler            */
    .long   BusFault_Handler            /* Bus Fault Handler            */
    .long   UsageFault_Handler          /* Usage Fault Handler          */
    .long   Sign_Value                  /* Reserved                     */
    .long   0                           /* Reserved                     */
    .long   0                           /* Reserved                     */
    .long   0                           /* Reserved                     */
    .long   SVC_Handler                 /* SVCall Handler               */
    .long   DebugMon_Handler            /* Debug Monitor Handler        */
    .long   0                           /* Reserved                     */
    .long   PendSV_Handler              /* PendSV Handler               */
    .long   SysTick_Handler             /* SysTick Handler              */

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

    .size   __interrupt_vector, . - __interrupt_vector


    .thumb


/* Reset Handler */
    .section  .text.Reset_Handler
	.weak  Reset_Handler
	.type  Reset_Handler, %function
Reset_Handler:
    .fnstart
.ifdef RAM_MODE
/* Clear .bss section (Zero init) */
	mov     R0, #0
	ldr     R1, =__bss_start__
	ldr    R2, =__bss_end__
	cmp     R1,R2
	beq     BSSIsEmpty
LoopZI:
    cmp     R1, R2
    bhs     BSSIsEmpty
    str     R0, [R1]
    add     R1, #4
    blo     LoopZI
BSSIsEmpty:
    ldr     R0, =SystemInit
    blx     R0
    ldr     R0,=main
    bx      R0
.else
    ldr     R0, =SystemInit
    blx     R0
    ldr     R0,=main
    bx      R0
.endif

    .pool
    .cantunwind
    .fnend
    .size   Reset_Handler,.-Reset_Handler

    .section ".text"

/* Exception Handlers */

    .weak   NMI_Handler
    .type   NMI_Handler, %function
NMI_Handler:
    B       .
    .size   NMI_Handler, . - NMI_Handler

    .weak   HardFault_Handler
    .type   HardFault_Handler, %function
HardFault_Handler:
    B       .
    .size   HardFault_Handler, . - HardFault_Handler

    .weak   MemManage_Handler
    .type   MemManage_Handler, %function
MemManage_Handler:
    B       .
    .size   MemManage_Handler, . - MemManage_Handler

    .weak   BusFault_Handler
    .type   BusFault_Handler, %function
BusFault_Handler:
    B       .
    .size   BusFault_Handler, . - BusFault_Handler

    .weak   UsageFault_Handler
    .type   UsageFault_Handler, %function
UsageFault_Handler:
    B       .
    .size   UsageFault_Handler, . - UsageFault_Handler

    .weak   SVC_Handler
    .type   SVC_Handler, %function
SVC_Handler:
    B       .
    .size   SVC_Handler, . - SVC_Handler

    .weak   DebugMon_Handler
    .type   DebugMon_Handler, %function
DebugMon_Handler:
    B       .
    .size   DebugMon_Handler, . - DebugMon_Handler

    .weak   PendSV_Handler
    .type   PendSV_Handler, %function
PendSV_Handler:
    B       .
    .size   PendSV_Handler, . - PendSV_Handler

    .weak   SysTick_Handler
    .type   SysTick_Handler, %function
SysTick_Handler:
    B       .
    .size   SysTick_Handler, . - SysTick_Handler


/* IRQ Handlers */

    .globl  Default_Handler
    .type   Default_Handler, %function
Default_Handler:
    B       .
    .size   Default_Handler, . - Default_Handler

    .macro  IRQ handler
    .weak   \handler
    .set    \handler, Default_Handler
    .endm

    IRQ    DAC_IRQHandler
    IRQ    M0CORE_IRQHandler
    IRQ    DMA_IRQHandler
    IRQ    EZH_IRQHandler
    IRQ    FLASH_EEPROM_IRQHandler
    IRQ    ETH_IRQHandler
    IRQ    SDIO_IRQHandler
    IRQ    LCD_IRQHandler
    IRQ    USB0_IRQHandler
    IRQ    USB1_IRQHandler
    IRQ    SCT_IRQHandler
    IRQ    RIT_IRQHandler
    IRQ    TIMER0_IRQHandler
    IRQ    TIMER1_IRQHandler
    IRQ    TIMER2_IRQHandler
    IRQ    TIMER3_IRQHandler
    IRQ    MCPWM_IRQHandler
    IRQ    ADC0_IRQHandler
    IRQ    I2C0_IRQHandler
    IRQ    I2C1_IRQHandler
    IRQ    SPI_IRQHandler
    IRQ    ADC1_IRQHandler
    IRQ    SSP0_IRQHandler
    IRQ    SSP1_IRQHandler
    IRQ    UART0_IRQHandler
    IRQ    UART1_IRQHandler
    IRQ    UART2_IRQHandler
    IRQ    UART3_IRQHandler
    IRQ    I2S0_IRQHandler
    IRQ    I2S1_IRQHandler
    IRQ    SPIFI_IRQHandler
    IRQ    SGPIO_IRQHandler
    IRQ    GPIO0_IRQHandler
    IRQ    GPIO1_IRQHandler
    IRQ    GPIO2_IRQHandler
    IRQ    GPIO3_IRQHandler
    IRQ    GPIO4_IRQHandler
    IRQ    GPIO5_IRQHandler
    IRQ    GPIO6_IRQHandler
    IRQ    GPIO7_IRQHandler
    IRQ    GINT0_IRQHandler
    IRQ    GINT1_IRQHandler
    IRQ    EVRT_IRQHandler
    IRQ    CAN1_IRQHandler
    IRQ    VADC_IRQHandler
    IRQ    ATIMER_IRQHandler
    IRQ    RTC_IRQHandler
    IRQ    WDT_IRQHandler
    IRQ    M0s_IRQHandler
    IRQ    CAN0_IRQHandler
    IRQ    QEI_IRQHandler

    .end