blob: d2fe03777ed5dfa44a60ea2dfdf3101f31560039 [file] [log] [blame]
;/*---------------------------------------------------------------------------------------------------------*/
;/* */
;/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
;/* */
;/*---------------------------------------------------------------------------------------------------------*/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MODULE ?cstartup
;; Forward declaration of sections.
SECTION CSTACK:DATA:NOROOT(3) ;; 8 bytes alignment
SECTION .intvec:CODE:NOROOT(2);; 4 bytes alignment
EXTERN SystemInit
EXTERN __iar_program_start
PUBLIC __vector_table
PUBLIC __Vectors
DATA
__Vectors
__vector_table
DCD sfe(CSTACK)
DCD Reset_Handler
DCD NMI_Handler
DCD HardFault_Handler
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD 0
DCD SVC_Handler
DCD 0
DCD 0
DCD PendSV_Handler
DCD SysTick_Handler
; External Interrupts
; maximum of 32 External Interrupts are possible
DCD BOD_IRQHandler ; 0
DCD IRC_IRQHandler ; 1
DCD PWRWU_IRQHandler ; 2
DCD SRAM_IRQHandler ; 3
DCD CLKFAIL_IRQHandler ; 4
DCD DEFAULT_IRQHandler ; 5
DCD RTC_IRQHandler ; 6
DCD TAMPER_IRQHandler ; 7
DCD WDT_IRQHandler ; 8
DCD WWDT_IRQHandler ; 9
DCD EINT0_IRQHandler ; 10
DCD EINT1_IRQHandler ; 11
DCD EINT2_IRQHandler ; 12
DCD EINT3_IRQHandler ; 13
DCD EINT4_IRQHandler ; 14
DCD EINT5_IRQHandler ; 15
DCD GPA_IRQHandler ; 16
DCD GPB_IRQHandler ; 17
DCD GPC_IRQHandler ; 18
DCD GPD_IRQHandler ; 19
DCD GPE_IRQHandler ; 20
DCD GPF_IRQHandler ; 21
DCD QSPI0_IRQHandler ; 22
DCD SPI0_IRQHandler ; 23
DCD BRAKE0_IRQHandler ; 24
DCD EPWM0_P0_IRQHandler ; 25
DCD EPWM0_P1_IRQHandler ; 26
DCD EPWM0_P2_IRQHandler ; 27
DCD BRAKE1_IRQHandler ; 28
DCD EPWM1_P0_IRQHandler ; 29
DCD EPWM1_P1_IRQHandler ; 30
DCD EPWM1_P2_IRQHandler ; 31
DCD TMR0_IRQHandler ; 32
DCD TMR1_IRQHandler ; 33
DCD TMR2_IRQHandler ; 34
DCD TMR3_IRQHandler ; 35
DCD UART0_IRQHandler ; 36
DCD UART1_IRQHandler ; 37
DCD I2C0_IRQHandler ; 38
DCD I2C1_IRQHandler ; 39
DCD PDMA0_IRQHandler ; 40
DCD DAC_IRQHandler ; 41
DCD EADC0_IRQHandler ; 42
DCD EADC1_IRQHandler ; 43
DCD ACMP01_IRQHandler ; 44
DCD DEFAULT_IRQHandler ; 45
DCD EADC2_IRQHandler ; 46
DCD EADC3_IRQHandler ; 47
DCD UART2_IRQHandler ; 48
DCD UART3_IRQHandler ; 49
DCD DEFAULT_IRQHandler ; 50
DCD SPI1_IRQHandler ; 51
DCD SPI2_IRQHandler ; 52
DCD USBD_IRQHandler ; 53
DCD USBH_IRQHandler ; 54
DCD USBOTG_IRQHandler ; 55
DCD CAN0_IRQHandler ; 56
DCD DEFAULT_IRQHandler ; 57
DCD SC0_IRQHandler ; 58
DCD SC1_IRQHandler ; 59
DCD SC2_IRQHandler ; 60
DCD DEFAULT_IRQHandler ; 61
DCD SPI3_IRQHandler ; 62
DCD DEFAULT_IRQHandler ; 63
DCD SDH0_IRQHandler ; 64
DCD DEFAULT_IRQHandler ; 65
DCD DEFAULT_IRQHandler ; 66
DCD DEFAULT_IRQHandler ; 67
DCD I2S0_IRQHandler ; 68
DCD DEFAULT_IRQHandler ; 69
DCD OPA0_IRQHandler ; 70
DCD CRPT_IRQHandler ; 71
DCD GPG_IRQHandler ; 72
DCD EINT6_IRQHandler ; 73
DCD UART4_IRQHandler ; 74
DCD UART5_IRQHandler ; 75
DCD USCI0_IRQHandler ; 76
DCD USCI1_IRQHandler ; 77
DCD BPWM0_IRQHandler ; 78
DCD BPWM1_IRQHandler ; 79
DCD DEFAULT_IRQHandler ; 80
DCD DEFAULT_IRQHandler ; 81
DCD I2C2_IRQHandler ; 82
DCD DEFAULT_IRQHandler ; 83
DCD QEI0_IRQHandler ; 84
DCD QEI1_IRQHandler ; 85
DCD ECAP0_IRQHandler ; 86
DCD ECAP1_IRQHandler ; 87
DCD GPH_IRQHandler ; 88
DCD EINT7_IRQHandler ; 89
DCD SDH1_IRQHandler ; 90
DCD DEFAULT_IRQHandler ; 91
DCD DEFAULT_IRQHandler ; 92
DCD DEFAULT_IRQHandler ; 93
DCD DEFAULT_IRQHandler ; 94
DCD DEFAULT_IRQHandler ; 95
DCD DEFAULT_IRQHandler ; 96
DCD DEFAULT_IRQHandler ; 97
DCD PDMA1_IRQHandler ; 98
DCD SCU_IRQHandler ; 99
DCD LCD_IRQHandler ; 100
DCD TRNG_IRQHandler ; 101
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
THUMB
PUBWEAK Reset_Handler
SECTION .text:CODE:NOROOT:REORDER(2) ; 4 bytes alignment
Reset_Handler
LDR R0, =SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0
PUBWEAK HardFault_Handler
PUBWEAK NMI_Handler
PUBWEAK SVC_Handler
PUBWEAK PendSV_Handler
PUBWEAK SysTick_Handler
PUBWEAK BOD_IRQHandler ; 0
PUBWEAK IRC_IRQHandler ; 1
PUBWEAK PWRWU_IRQHandler ; 2
PUBWEAK SRAM_IRQHandler ; 3
PUBWEAK CLKFAIL_IRQHandler ; 4
;PUBWEAK 0 ; 5
PUBWEAK RTC_IRQHandler ; 6
PUBWEAK TAMPER_IRQHandler ; 7
PUBWEAK WDT_IRQHandler ; 8
PUBWEAK WWDT_IRQHandler ; 9
PUBWEAK EINT0_IRQHandler ; 10
PUBWEAK EINT1_IRQHandler ; 11
PUBWEAK EINT2_IRQHandler ; 12
PUBWEAK EINT3_IRQHandler ; 13
PUBWEAK EINT4_IRQHandler ; 14
PUBWEAK EINT5_IRQHandler ; 15
PUBWEAK GPA_IRQHandler ; 16
PUBWEAK GPB_IRQHandler ; 17
PUBWEAK GPC_IRQHandler ; 18
PUBWEAK GPD_IRQHandler ; 19
PUBWEAK GPE_IRQHandler ; 20
PUBWEAK GPF_IRQHandler ; 21
PUBWEAK QSPI0_IRQHandler ; 22
PUBWEAK SPI0_IRQHandler ; 23
PUBWEAK BRAKE0_IRQHandler ; 24
PUBWEAK EPWM0_P0_IRQHandler ; 25
PUBWEAK EPWM0_P1_IRQHandler ; 26
PUBWEAK EPWM0_P2_IRQHandler ; 27
PUBWEAK BRAKE1_IRQHandler ; 28
PUBWEAK EPWM1_P0_IRQHandler ; 29
PUBWEAK EPWM1_P1_IRQHandler ; 30
PUBWEAK EPWM1_P2_IRQHandler ; 31
PUBWEAK TMR0_IRQHandler ; 32
PUBWEAK TMR1_IRQHandler ; 33
PUBWEAK TMR2_IRQHandler ; 34
PUBWEAK TMR3_IRQHandler ; 35
PUBWEAK UART0_IRQHandler ; 36
PUBWEAK UART1_IRQHandler ; 37
PUBWEAK I2C0_IRQHandler ; 38
PUBWEAK I2C1_IRQHandler ; 39
PUBWEAK PDMA0_IRQHandler ; 40
PUBWEAK DAC_IRQHandler ; 41
PUBWEAK EADC0_IRQHandler ; 42
PUBWEAK EADC1_IRQHandler ; 43
PUBWEAK ACMP01_IRQHandler ; 44
;PUBWEAK 0 ; 45
PUBWEAK EADC2_IRQHandler ; 46
PUBWEAK EADC3_IRQHandler ; 47
PUBWEAK UART2_IRQHandler ; 48
PUBWEAK UART3_IRQHandler ; 49
;PUBWEAK 0 ; 50
PUBWEAK SPI1_IRQHandler ; 51
PUBWEAK SPI2_IRQHandler ; 52
PUBWEAK USBD_IRQHandler ; 53
PUBWEAK USBH_IRQHandler ; 54
PUBWEAK USBOTG_IRQHandler ; 55
PUBWEAK CAN0_IRQHandler ; 56
PUBWEAK CAN1_IRQHandler ; 57
PUBWEAK SC0_IRQHandler ; 58
PUBWEAK SC1_IRQHandler ; 59
PUBWEAK SC2_IRQHandler ; 60
PUBWEAK SC3_IRQHandler ; 61
PUBWEAK SPI3_IRQHandler ; 62
;PUBWEAK 0 ; 63
PUBWEAK SDH0_IRQHandler ; 64
;PUBWEAK 0 ; 65
;PUBWEAK 0 ; 66
;PUBWEAK 0 ; 67
PUBWEAK I2S0_IRQHandler ; 68
;PUBWEAK 0 ; 69
PUBWEAK OPA0_IRQHandler ; 70
PUBWEAK CRPT_IRQHandler ; 71
PUBWEAK GPG_IRQHandler ; 72
PUBWEAK EINT6_IRQHandler ; 73
PUBWEAK UART4_IRQHandler ; 74
PUBWEAK UART5_IRQHandler ; 75
PUBWEAK USCI0_IRQHandler ; 76
PUBWEAK USCI1_IRQHandler ; 77
PUBWEAK BPWM0_IRQHandler ; 78
PUBWEAK BPWM1_IRQHandler ; 79
;PUBWEAK 0 ; 80
;PUBWEAK 0 ; 81
PUBWEAK I2C2_IRQHandler ; 82
;PUBWEAK 0 ; 83
PUBWEAK QEI0_IRQHandler ; 84
PUBWEAK QEI1_IRQHandler ; 85
PUBWEAK ECAP0_IRQHandler ; 86
PUBWEAK ECAP1_IRQHandler ; 87
PUBWEAK GPH_IRQHandler ; 88
PUBWEAK EINT7_IRQHandler ; 89
PUBWEAK SDH1_IRQHandler ; 90
;PUBWEAK 0 ; 91
;PUBWEAK USBH_IRQHandler ; 92
;PUBWEAK 0 ; 93
;PUBWEAK 0 ; 94
;PUBWEAK 0 ; 95
;PUBWEAK 0 ; 96
;PUBWEAK 0 ; 97
PUBWEAK PDMA1_IRQHandler ; 98
PUBWEAK SCU_IRQHandler ; 99
PUBWEAK LCD_IRQHandler ; 100
PUBWEAK TRNG_IRQHandler ; 101
PUBWEAK DEFAULT_IRQHandler
SECTION .text:CODE:NOROOT:REORDER(2)
HardFault_Handler
NMI_Handler
SVC_Handler
PendSV_Handler
SysTick_Handler
BOD_IRQHandler ; 0
IRC_IRQHandler ; 1
PWRWU_IRQHandler ; 2
SRAM_IRQHandler ; 3
CLKFAIL_IRQHandler ; 4
;0 ; 5
RTC_IRQHandler ; 6
TAMPER_IRQHandler ; 7
WDT_IRQHandler ; 8
WWDT_IRQHandler ; 9
EINT0_IRQHandler ; 10
EINT1_IRQHandler ; 11
EINT2_IRQHandler ; 12
EINT3_IRQHandler ; 13
EINT4_IRQHandler ; 14
EINT5_IRQHandler ; 15
GPA_IRQHandler ; 16
GPB_IRQHandler ; 17
GPC_IRQHandler ; 18
GPD_IRQHandler ; 19
GPE_IRQHandler ; 20
GPF_IRQHandler ; 21
QSPI0_IRQHandler ; 22
SPI0_IRQHandler ; 23
BRAKE0_IRQHandler ; 24
EPWM0_P0_IRQHandler ; 25
EPWM0_P1_IRQHandler ; 26
EPWM0_P2_IRQHandler ; 27
BRAKE1_IRQHandler ; 28
EPWM1_P0_IRQHandler ; 29
EPWM1_P1_IRQHandler ; 30
EPWM1_P2_IRQHandler ; 31
TMR0_IRQHandler ; 32
TMR1_IRQHandler ; 33
TMR2_IRQHandler ; 34
TMR3_IRQHandler ; 35
UART0_IRQHandler ; 36
UART1_IRQHandler ; 37
I2C0_IRQHandler ; 38
I2C1_IRQHandler ; 39
PDMA0_IRQHandler ; 40
DAC_IRQHandler ; 41
EADC0_IRQHandler ; 42
EADC1_IRQHandler ; 43
ACMP01_IRQHandler ; 44
;0 ; 45
EADC2_IRQHandler ; 46
EADC3_IRQHandler ; 47
UART2_IRQHandler ; 48
UART3_IRQHandler ; 49
;0 ; 50
SPI1_IRQHandler ; 51
SPI2_IRQHandler ; 52
USBD_IRQHandler ; 53
USBH_IRQHandler ; 54
USBOTG_IRQHandler ; 55
CAN0_IRQHandler ; 56
CAN1_IRQHandler ; 57
SC0_IRQHandler ; 58
SC1_IRQHandler ; 59
SC2_IRQHandler ; 60
SC3_IRQHandler ; 61
SPI3_IRQHandler ; 62
;0 ; 63
SDH0_IRQHandler ; 64
;0 ; 65
;0 ; 66
;0 ; 67
I2S0_IRQHandler ; 68
;0 ; 69
OPA0_IRQHandler ; 70
CRPT_IRQHandler ; 71
GPG_IRQHandler ; 72
EINT6_IRQHandler ; 73
UART4_IRQHandler ; 74
UART5_IRQHandler ; 75
USCI0_IRQHandler ; 76
USCI1_IRQHandler ; 77
BPWM0_IRQHandler ; 78
BPWM1_IRQHandler ; 79
;0 ; 80
;0 ; 81
I2C2_IRQHandler ; 82
;0 ; 83
QEI0_IRQHandler ; 84
QEI1_IRQHandler ; 85
ECAP0_IRQHandler ; 86
ECAP1_IRQHandler ; 87
GPH_IRQHandler ; 88
EINT7_IRQHandler ; 89
SDH1_IRQHandler ; 90
;0 ; 91
;USBH_IRQHandler ; 92
;0 ; 93
;0 ; 94
;0 ; 95
;0 ; 96
;0 ; 97
PDMA1_IRQHandler ; 98
SCU_IRQHandler ; 99
LCD_IRQHandler ; 100
TRNG_IRQHandler ; 101
DEFAULT_IRQHandler
B DEFAULT_IRQHandler
;void SH_ICE(void)
PUBLIC SH_ICE
SH_ICE
CMP R2,#0
BEQ SH_End
STR R0,[R2] ; Save the return value to *pn32Out_R0
;void SH_End(void)
PUBLIC SH_End
SH_End
MOVS R0,#1 ; Set return value to 1
BX lr ; Return
;int32_t SH_DoCommand(int32_t n32In_R0, int32_t n32In_R1, int32_t *pn32Out_R0)
PUBLIC SH_DoCommand
SH_DoCommand
BKPT 0xAB ; This instruction will cause ICE trap or system HardFault
B SH_ICE
SH_HardFault ; Captured by HardFault
MOVS R0,#0 ; Set return value to 0
BX lr ; Return
PUBLIC __PC
__PC
MOV r0, lr
BLX lr
END