| ;/*************************************************************************//** | |
| ; * @file: startup_efm32.s | |
| ; * @purpose: CMSIS Cortex-M3 Core Device Startup File | |
| ; * for the Energy Micro 'EFM32G' Device Series | |
| ; * @version 1.0.2 | |
| ; * @date: 10. September 2009 | |
| ; *---------------------------------------------------------------------------- | |
| ; * | |
| ; * Copyright (C) 2009 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 | |
| __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 0 | |
| DCD 0 | |
| DCD 0 | |
| DCD 0 | |
| DCD vPortSVCHandler | |
| DCD DebugMon_Handler | |
| DCD 0 | |
| DCD xPortPendSVHandler | |
| DCD xPortSysTickHandler | |
| ; External Interrupts | |
| DCD DMA_IRQHandler ; 0: DMA Interrupt | |
| DCD GPIO_EVEN_IRQHandler ; 1: GPIO_EVEN Interrupt | |
| DCD TIMER0_IRQHandler ; 2: TIMER0 Interrupt | |
| DCD USART0_RX_IRQHandler ; 3: USART0_RX Interrupt | |
| DCD USART0_TX_IRQHandler ; 4: USART0_TX Interrupt | |
| DCD ACMP0_IRQHandler ; 5: ACMP0 Interrupt | |
| DCD ADC0_IRQHandler ; 6: ADC0 Interrupt | |
| DCD DAC0_IRQHandler ; 7: DAC0 Interrupt | |
| DCD I2C0_IRQHandler ; 8: I2C0 Interrupt | |
| DCD GPIO_ODD_IRQHandler ; 9: GPIO_ODD Interrupt | |
| DCD TIMER1_IRQHandler ; 10: TIMER1 Interrupt | |
| DCD TIMER2_IRQHandler ; 11: TIMER2 Interrupt | |
| DCD USART1_RX_IRQHandler ; 12: USART1_RX Interrupt | |
| DCD USART1_TX_IRQHandler ; 13: USART1_TX Interrupt | |
| DCD USART2_RX_IRQHandler ; 14: USART2_RX Interrupt | |
| DCD USART2_TX_IRQHandler ; 15: USART2_TX Interrupt | |
| DCD UART0_RX_IRQHandler ; 16: UART0_RX Interrupt | |
| DCD UART0_TX_IRQHandler ; 17: UART0_TX Interrupt | |
| DCD LEUART0_IRQHandler ; 18: LEUART0 Interrupt | |
| DCD LEUART1_IRQHandler ; 19: LEUART1 Interrupt | |
| DCD LETIMER0_IRQHandler ; 20: LETIMER0 Interrupt | |
| DCD PCNT0_IRQHandler ; 21: PCNT0 Interrupt | |
| DCD PCNT1_IRQHandler ; 22: PCNT1 Interrupt | |
| DCD PCNT2_IRQHandler ; 23: PCNT2 Interrupt | |
| DCD SYSTICCK_IRQHandler;DCD RTC_IRQHandler ; 24: RTC Interrupt | |
| DCD CMU_IRQHandler ; 25: CMU Interrupt | |
| DCD VCMP_IRQHandler ; 26: VCMP Interrupt | |
| DCD LCD_IRQHandler ; 27: LCD Interrupt | |
| DCD MSC_IRQHandler ; 28: MSC Interrupt | |
| DCD AES_IRQHandler ; 29: AES Interrupt | |
| __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, =SystemInit | |
| BLX R0 | |
| 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 vPortSVCHandler | |
| SECTION .text:CODE:REORDER(1) | |
| vPortSVCHandler | |
| B vPortSVCHandler | |
| PUBWEAK DebugMon_Handler | |
| SECTION .text:CODE:REORDER(1) | |
| DebugMon_Handler | |
| B DebugMon_Handler | |
| PUBWEAK xPortPendSVHandler | |
| SECTION .text:CODE:REORDER(1) | |
| xPortPendSVHandler | |
| B xPortPendSVHandler | |
| PUBWEAK SYSTICCK_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| SYSTICCK_IRQHandler | |
| B SYSTICCK_IRQHandler | |
| ; EFM32G specific interrupt handlers | |
| PUBWEAK DMA_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| DMA_IRQHandler | |
| B DMA_IRQHandler | |
| PUBWEAK GPIO_EVEN_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| GPIO_EVEN_IRQHandler | |
| B GPIO_EVEN_IRQHandler | |
| PUBWEAK TIMER0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| TIMER0_IRQHandler | |
| B TIMER0_IRQHandler | |
| PUBWEAK USART0_RX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| USART0_RX_IRQHandler | |
| B USART0_RX_IRQHandler | |
| PUBWEAK USART0_TX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| USART0_TX_IRQHandler | |
| B USART0_TX_IRQHandler | |
| PUBWEAK ACMP0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| ACMP0_IRQHandler | |
| B ACMP0_IRQHandler | |
| PUBWEAK ADC0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| ADC0_IRQHandler | |
| B ADC0_IRQHandler | |
| PUBWEAK DAC0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| DAC0_IRQHandler | |
| B DAC0_IRQHandler | |
| PUBWEAK I2C0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| I2C0_IRQHandler | |
| B I2C0_IRQHandler | |
| PUBWEAK GPIO_ODD_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| GPIO_ODD_IRQHandler | |
| B GPIO_ODD_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 USART1_RX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| USART1_RX_IRQHandler | |
| B USART1_RX_IRQHandler | |
| PUBWEAK USART1_TX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| USART1_TX_IRQHandler | |
| B USART1_TX_IRQHandler | |
| PUBWEAK USART2_RX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| USART2_RX_IRQHandler | |
| B USART2_RX_IRQHandler | |
| PUBWEAK USART2_TX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| USART2_TX_IRQHandler | |
| B USART2_TX_IRQHandler | |
| PUBWEAK UART0_RX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| UART0_RX_IRQHandler | |
| B UART0_RX_IRQHandler | |
| PUBWEAK UART0_TX_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| UART0_TX_IRQHandler | |
| B UART0_TX_IRQHandler | |
| PUBWEAK LEUART0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| LEUART0_IRQHandler | |
| B LEUART0_IRQHandler | |
| PUBWEAK LEUART1_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| LEUART1_IRQHandler | |
| B LEUART1_IRQHandler | |
| PUBWEAK LETIMER0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| LETIMER0_IRQHandler | |
| B LETIMER0_IRQHandler | |
| PUBWEAK PCNT0_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| PCNT0_IRQHandler | |
| B PCNT0_IRQHandler | |
| PUBWEAK PCNT1_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| PCNT1_IRQHandler | |
| B PCNT1_IRQHandler | |
| PUBWEAK PCNT2_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| PCNT2_IRQHandler | |
| B PCNT2_IRQHandler | |
| PUBWEAK xPortSysTickHandler | |
| SECTION .text:CODE:REORDER(1) | |
| xPortSysTickHandler | |
| B xPortSysTickHandler | |
| PUBWEAK CMU_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| CMU_IRQHandler | |
| B CMU_IRQHandler | |
| PUBWEAK VCMP_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| VCMP_IRQHandler | |
| B VCMP_IRQHandler | |
| PUBWEAK LCD_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| LCD_IRQHandler | |
| B LCD_IRQHandler | |
| PUBWEAK MSC_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| MSC_IRQHandler | |
| B MSC_IRQHandler | |
| PUBWEAK AES_IRQHandler | |
| SECTION .text:CODE:REORDER(1) | |
| AES_IRQHandler | |
| B AES_IRQHandler | |
| END |