311 lines
4.4 KiB
ArmAsm
311 lines
4.4 KiB
ArmAsm
|
MODULE ?cstartup
|
||
|
|
||
|
EXTERN __iar_program_start
|
||
|
|
||
|
SECTION CSTACK:DATA:NOROOT(3)
|
||
|
|
||
|
PUBLIC start_flash
|
||
|
SECTION .intvec:CODE:REORDER(2)
|
||
|
start_flash
|
||
|
LDR R0, =hardware_init
|
||
|
BX R0
|
||
|
|
||
|
PUBLIC hard_fault_handler
|
||
|
hard_fault_handler
|
||
|
BL HARD_FAULT_IRQHandler
|
||
|
|
||
|
PUBLIC svc_handler
|
||
|
svc_handler
|
||
|
BL SVC_IRQHandler
|
||
|
|
||
|
PUBLIC pendsv_handler
|
||
|
pendsv_handler
|
||
|
BL PENDSV_IRQHandler
|
||
|
|
||
|
PUBLIC systick
|
||
|
systick
|
||
|
BL SYSTICK_IRQHandler
|
||
|
|
||
|
PUBLIC irq0
|
||
|
irq0
|
||
|
movs r0,#0
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq1
|
||
|
irq1
|
||
|
movs r0,#1
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq2
|
||
|
irq2
|
||
|
movs r0,#2
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq3
|
||
|
irq3
|
||
|
movs r0,#3
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq4
|
||
|
irq4
|
||
|
movs r0,#4
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq5
|
||
|
irq5
|
||
|
movs r0,#5
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq6
|
||
|
irq6
|
||
|
movs r0,#6
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq7
|
||
|
irq7
|
||
|
movs r0,#7
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq8
|
||
|
irq8
|
||
|
movs r0,#8
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq9
|
||
|
irq9
|
||
|
movs r0,#9
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq10
|
||
|
irq10
|
||
|
movs r0,#10
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq11
|
||
|
irq11
|
||
|
movs r0,#11
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq12
|
||
|
irq12
|
||
|
movs r0,#12
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq13
|
||
|
irq13
|
||
|
movs r0,#13
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq14
|
||
|
irq14
|
||
|
movs r0,#14
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq15
|
||
|
irq15
|
||
|
movs r0,#15
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq16
|
||
|
irq16
|
||
|
movs r0,#16
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq17
|
||
|
irq17
|
||
|
movs r0,#17
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq18
|
||
|
irq18
|
||
|
movs r0,#18
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq19
|
||
|
irq19
|
||
|
movs r0,#19
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq20
|
||
|
irq20
|
||
|
movs r0,#20
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq21
|
||
|
irq21
|
||
|
movs r0,#21
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq22
|
||
|
irq22
|
||
|
movs r0,#22
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq23
|
||
|
irq23
|
||
|
movs r0,#23
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq24
|
||
|
irq24
|
||
|
movs r0,#24
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq25
|
||
|
irq25
|
||
|
movs r0,#25
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq26
|
||
|
irq26
|
||
|
movs r0,#26
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq27
|
||
|
irq27
|
||
|
movs r0,#27
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq28
|
||
|
irq28
|
||
|
movs r0,#28
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq29
|
||
|
irq29
|
||
|
movs r0,#29
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq30
|
||
|
irq30
|
||
|
movs r0,#30
|
||
|
b isr
|
||
|
|
||
|
PUBLIC irq31
|
||
|
irq31
|
||
|
movs r0,#31
|
||
|
b isr
|
||
|
|
||
|
PUBLIC isr
|
||
|
isr
|
||
|
ldr r1,=__vector_table
|
||
|
ldr r0,[r0, r1]
|
||
|
bx r0
|
||
|
|
||
|
|
||
|
PUBWEAK HARD_FAULT_IRQHandler
|
||
|
PUBWEAK SVC_IRQHandler
|
||
|
PUBWEAK PENDSV_IRQHandler
|
||
|
PUBWEAK SYSTICK_IRQHandler
|
||
|
PUBWEAK USB_IRQHandler
|
||
|
PUBWEAK IIC_IRQHandler
|
||
|
PUBWEAK QSPI_IRQHandler
|
||
|
PUBWEAK SPI0_IRQHandler
|
||
|
PUBWEAK SPI1_IRQHandler
|
||
|
PUBWEAK UART0_IRQHandler
|
||
|
PUBWEAK UART1_IRQHandler
|
||
|
PUBWEAK MEMCP_IRQHandler
|
||
|
PUBWEAK RSA_IRQHandler
|
||
|
PUBWEAK SCI0_IRQHandler
|
||
|
PUBWEAK SCI1_IRQHandler
|
||
|
PUBWEAK BT_IRQHandler
|
||
|
PUBWEAK GPIO_IRQHandler
|
||
|
PUBWEAK TIMER0_IRQHandler
|
||
|
PUBWEAK TIMER1_IRQHandler
|
||
|
PUBWEAK TIMER2_IRQHandler
|
||
|
PUBWEAK TIMER3_IRQHandler
|
||
|
PUBWEAK TIMER4_IRQHandler
|
||
|
PUBWEAK TIMER5_IRQHandler
|
||
|
PUBWEAK TIMER6_IRQHandler
|
||
|
PUBWEAK TIMER7_IRQHandler
|
||
|
PUBWEAK TIMER8_IRQHandler
|
||
|
PUBWEAK SM4_IRQHandler
|
||
|
PUBWEAK SEC_IRQHandler
|
||
|
PUBWEAK MSR_IRQHandler
|
||
|
PUBWEAK TRNG_IRQHandler
|
||
|
PUBWEAK WDT_IRQHandler
|
||
|
|
||
|
|
||
|
HARD_FAULT_IRQHandler
|
||
|
SVC_IRQHandler
|
||
|
PENDSV_IRQHandler
|
||
|
SYSTICK_IRQHandler
|
||
|
|
||
|
USB_IRQHandler
|
||
|
IIC_IRQHandler
|
||
|
QSPI_IRQHandler
|
||
|
SPI0_IRQHandler
|
||
|
SPI1_IRQHandler
|
||
|
UART0_IRQHandler
|
||
|
UART1_IRQHandler
|
||
|
MEMCP_IRQHandler
|
||
|
RSA_IRQHandler
|
||
|
SCI0_IRQHandler
|
||
|
SCI1_IRQHandler
|
||
|
BT_IRQHandler
|
||
|
GPIO_IRQHandler
|
||
|
TIMER0_IRQHandler
|
||
|
TIMER1_IRQHandler
|
||
|
TIMER2_IRQHandler
|
||
|
TIMER3_IRQHandler
|
||
|
TIMER4_IRQHandler
|
||
|
TIMER5_IRQHandler
|
||
|
TIMER6_IRQHandler
|
||
|
TIMER7_IRQHandler
|
||
|
TIMER8_IRQHandler
|
||
|
SM4_IRQHandler
|
||
|
SEC_IRQHandler
|
||
|
MSR_IRQHandler
|
||
|
TRNG_IRQHandler
|
||
|
WDT_IRQHandler
|
||
|
B .
|
||
|
|
||
|
PUBLIC delay
|
||
|
delay
|
||
|
subs r0,#1
|
||
|
bne delay
|
||
|
nop
|
||
|
bx lr
|
||
|
|
||
|
PUBLIC __vector_table
|
||
|
ALIGNROM 2
|
||
|
data
|
||
|
__vector_table
|
||
|
DCD USB_IRQHandler
|
||
|
DCD IIC_IRQHandler
|
||
|
DCD QSPI_IRQHandler
|
||
|
DCD SPI0_IRQHandler
|
||
|
DCD SPI1_IRQHandler
|
||
|
DCD UART0_IRQHandler
|
||
|
DCD UART1_IRQHandler
|
||
|
DCD MEMCP_IRQHandler
|
||
|
DCD RSA_IRQHandler
|
||
|
DCD SCI0_IRQHandler
|
||
|
DCD SCI1_IRQHandler
|
||
|
DCD BT_IRQHandler
|
||
|
DCD GPIO_IRQHandler
|
||
|
DCD TIMER0_IRQHandler
|
||
|
DCD TIMER1_IRQHandler
|
||
|
DCD TIMER2_IRQHandler
|
||
|
DCD TIMER3_IRQHandler
|
||
|
DCD TIMER4_IRQHandler
|
||
|
DCD TIMER5_IRQHandler
|
||
|
DCD TIMER6_IRQHandler
|
||
|
DCD TIMER7_IRQHandler
|
||
|
DCD TIMER8_IRQHandler
|
||
|
DCD SM4_IRQHandler
|
||
|
DCD SEC_IRQHandler
|
||
|
DCD MSR_IRQHandler
|
||
|
DCD TRNG_IRQHandler
|
||
|
DCD WDT_IRQHandler
|
||
|
|
||
|
|
||
|
PUBLIC hardware_init
|
||
|
SECTION .intvec:CODE:REORDER(2)
|
||
|
CODE
|
||
|
hardware_init
|
||
|
LDR R0, =sfe(CSTACK)
|
||
|
mov sp, R0
|
||
|
LDR R0, =__iar_program_start
|
||
|
BX R0
|
||
|
END
|