;/*************************************************************************//** ; * @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