1		.org 0x200
2		.global Reset_Handler,hard_fault_handler,svc_handler,pendsv_handler,systick,irq0,irq1,irq2,irq3,irq4,irq5,irq6,irq7,irq8,irq9,irq10,irq11,irq12,irq13,irq14,irq15,irq16,irq17,irq18,irq19,irq20,irq21,irq22,irq23,irq24,irq25,irq26,irq27,irq28,irq29,irq30,irq31
3
4		.long
5
6
7Reset_Handler:
8		ldr r0,=hardware_init
9		bx r0
10		.thumb_func
11
12hard_fault_handler:
13		ldr r0,=HARD_FAULT_IRQHandler
14		bx r0
15		nop
16		.thumb_func
17
18svc_handler:
19		ldr r0,=SVC_IRQHandler
20		bx r0
21		nop
22		.thumb_func
23
24pendsv_handler:
25		ldr r0,=PENDSV_IRQHandler
26		bx r0
27		nop
28		.thumb_func
29systick:
30		ldr r0,=SYSTICK_IRQHandler
31		bx r0
32		nop
33		.thumb_func
34irq0:
35		mov r0,#4*0
36		b isr
37		.thumb_func
38irq1:
39		mov r0,#4*1
40		b isr
41		.thumb_func
42irq2:
43		mov r0,#4*2
44		b isr
45		.thumb_func
46irq3:
47		mov r0,#4*3
48		b isr
49		.thumb_func
50irq4:
51		mov r0,#4*4
52		b isr
53		.thumb_func
54irq5:
55		mov r0,#4*5
56		b isr
57		.thumb_func
58irq6:
59		mov r0,#4*6
60		b isr
61		.thumb_func
62irq7:
63		mov r0,#4*7
64		b isr
65		.thumb_func
66irq8:
67		mov r0,#4*8
68		b isr
69		.thumb_func
70irq9:
71		mov r0,#4*9
72		b isr
73		.thumb_func
74irq10:
75		mov r0,#4*10
76		b isr
77		.thumb_func
78irq11:
79		mov r0,#4*11
80		b isr
81		.thumb_func
82irq12:
83		mov r0,#4*12
84		b isr
85		.thumb_func
86irq13:
87		mov r0,#4*13
88		b isr
89		.thumb_func
90irq14:
91		mov r0,#4*14
92		b isr
93		.thumb_func
94irq15:
95		mov r0,#4*15
96		b isr
97		.thumb_func
98irq16:
99		mov r0,#4*16
100		b isr
101		.thumb_func
102irq17:
103		mov r0,#4*17
104		b isr
105		.thumb_func
106irq18:
107		mov r0,#4*18
108		b isr
109		.thumb_func
110irq19:
111		mov r0,#4*19
112		b isr
113		.thumb_func
114irq20:
115		mov r0,#4*20
116		b isr
117		.thumb_func
118irq21:
119		mov r0,#4*21
120		b isr
121		.thumb_func
122irq22:	mov r0,#4*22
123		b isr
124		.thumb_func
125irq23:
126		mov r0,#4*23
127		b isr
128		.thumb_func
129irq24:
130		mov r0,#4*24
131		b isr
132		.thumb_func
133irq25:	mov r0,#4*25
134		b isr
135		.thumb_func
136irq26:
137		mov r0,#4*26
138		b isr
139		.thumb_func
140irq27:
141		mov r0,#4*27
142		b isr
143		.thumb_func
144irq28:
145		mov r0,#4*28
146		b isr
147		.thumb_func
148irq29:
149		mov r0,#4*29
150		b isr
151		.thumb_func
152irq30:
153		mov r0,#4*30
154		b isr
155		.thumb_func
156irq31:
157		mov r0,#4*31
158		b isr
159		.thumb_func
160
161
162
163isr:
164		ldr r1,=isr_table
165		ldr r0,[r0, r1]
166		bx r0
167
168
169
170
171	.align 4
172isr_table:
173		.long USB_IRQHandler
174		.long IIC_IRQHandler
175		.long QSPI_IRQHandler
176		.long SPI0_IRQHandler
177		.long SPI1_IRQHandler
178		.long UART0_IRQHandler
179		.long UART1_IRQHandler
180		.long MEMCP_IRQHandler
181		.long RSA_IRQHandler
182		.long SCI0_IRQHandler
183		.long SCI1_IRQHandler
184		.long BT_IRQHandler
185		.long GPIO_IRQHandler
186		.long TIMER0_IRQHandler
187		.long TIMER1_IRQHandler
188		.long TIMER2_IRQHandler
189		.long TIMER3_IRQHandler
190		.long TIMER4_IRQHandler
191		.long TIMER5_IRQHandler
192		.long TIMER6_IRQHandler
193		.long TIMER7_IRQHandler
194		.long TIMER8_IRQHandler
195		.long SM4_IRQHandler
196		.long SEC_IRQHandler
197		.long MSR_IRQHandler
198		.long TRNG_IRQHandler
199		.long WDT_IRQHandler
200
201		.thumb
202		.thumb_func
203hardware_init:
204		ldr	r1, =__exidx_start
205		ldr	r2, =__data_start__
206		ldr	r3, =__data_end__
207
208		sub	r3, r2
209		ble	.L_loop1_done
210
211	.L_loop1:
212		sub	r3, #4
213		ldr	r0, [r1,r3]
214		str	r0, [r2,r3]
215		bgt	.L_loop1
216
217	.L_loop1_done:
218
219
220
221	/*  Single BSS section scheme.
222	 *
223	 *  The BSS section is specified by following symbols
224	 *    _sbss: start of the BSS section.
225	 *    _ebss: end of the BSS section.
226	 *
227	 *  Both addresses must be aligned to 4 bytes boundary.
228	 */
229		ldr	r1, =__bss_start__
230		ldr	r2, =__bss_end__
231
232		mov	r0, #0
233
234		sub	r2, r1
235		ble	.L_loop3_done
236
237	.L_loop3:
238		sub	r2, #4
239		str	r0, [r1, r2]
240		bgt	.L_loop3
241	.L_loop3_done:
242		ldr	r0,=0x12345
243		ldr	r3,=0x1111
244		bl	main
245
246
247		.globl delay
248		.syntax unified
249delay:
250		subs r0,#1
251		bne delay
252		nop
253		bx lr
254
255
256
257
258
259
260
261.align	1
262.thumb_func
263.weak	Default_Handler
264.type	Default_Handler, %function
265
266Default_Handler:
267	b	.
268	.size	Default_Handler, . - Default_Handler
269
270/*    Macro to define default handlers. Default handler
271 *    will be weak symbol and just dead loops. They can be
272 *    overwritten by other handlers */
273
274	.macro	def_irq_handler	handler_name
275	.weak	\handler_name
276	.set	\handler_name, Default_Handler
277	.endm
278
279	def_irq_handler HARD_FAULT_IRQHandler
280	def_irq_handler SVC_IRQHandler
281	def_irq_handler PENDSV_IRQHandler
282	def_irq_handler SYSTICK_IRQHandler
283	def_irq_handler	USB_IRQHandler
284	def_irq_handler	IIC_IRQHandler
285	def_irq_handler	QSPI_IRQHandler
286	def_irq_handler	SPI0_IRQHandler
287	def_irq_handler	SPI1_IRQHandler
288	def_irq_handler	UART0_IRQHandler
289	def_irq_handler	UART1_IRQHandler
290	def_irq_handler MEMCP_IRQHandler
291	def_irq_handler RSA_IRQHandler
292	def_irq_handler SCI0_IRQHandler
293	def_irq_handler SCI1_IRQHandler
294	def_irq_handler BT_IRQHandler
295	def_irq_handler GPIO_IRQHandler
296	def_irq_handler EXTI0_IRQHandler
297	def_irq_handler EXTI1_IRQHandler
298	def_irq_handler EXTI2_IRQHandler
299	def_irq_handler TIMER0_IRQHandler
300	def_irq_handler TIMER1_IRQHandler
301	def_irq_handler TIMER2_IRQHandler
302	def_irq_handler TIMER3_IRQHandler
303  def_irq_handler TIMER4_IRQHandler
304  def_irq_handler TIMER5_IRQHandler
305  def_irq_handler TIMER6_IRQHandler
306  def_irq_handler TIMER7_IRQHandler
307  def_irq_handler TIMER8_IRQHandler
308  def_irq_handler SM4_IRQHandler
309  def_irq_handler SEC_IRQHandler
310  def_irq_handler MSR_IRQHandler
311  def_irq_handler TRNG_IRQHandler
312  def_irq_handler WDT_IRQHandler
313
314
315
316
317
318
319