123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- ;/*
- ; * File : context_iar.S
- ; * This file is part of RT-Thread RTOS
- ; * COPYRIGHT (C) 2009 - 2011, RT-Thread Development Team
- ; *
- ; * The license and distribution terms for this file may be
- ; * found in the file LICENSE in this distribution or at
- ; * http://www.rt-thread.org/license/LICENSE
- ; *
- ; * Change Logs:
- ; * Date Author Notes
- ; * 2009-01-17 Bernard first version
- ; * 2009-09-27 Bernard add protect when contex switch occurs
- ; */
- #include "rtconfig.h"
- MODULE ?cstartup
- ;; ICODE is the same segment as cstartup. By placing __low_level_init
- ;; in the same segment, we make sure it can be reached with BL. */
- SECTION CSTACK:DATA:NOROOT(3)
- SECTION .icode:CODE:NOROOT(2)
- #ifdef RT_USING_UART2
- IMPORT MFS2RX_IRQHandler
- #endif
- PUBLIC __low_level_init
- PUBWEAK SystemInit_ExtMemCtl
- SECTION .text:CODE:REORDER(2)
- THUMB
- SystemInit_ExtMemCtl
- BX LR
- __low_level_init:
- ;; Initialize hardware.
- LDR R0, = SystemInit_ExtMemCtl ; initialize external memory controller
- MOV R11, LR
- BLX R0
- LDR R1, =sfe(CSTACK) ; restore original stack pointer
- MSR MSP, R1
- MOV R0,#1
- ;; Return with BX to be independent of mode of caller
- BX R11
- ;; Forward declaration of sections.
- SECTION .intvec:CODE:NOROOT(2)
- EXTERN __iar_program_start
- PUBLIC __vector_table
- DATA
- __vector_table
- DCD sfe(CSTACK)
- DCD __iar_program_start
-
- DCD NMI_Handler ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
- DCD MemManage_Handler ; MPU Fault Handler
- DCD BusFault_Handler ; Bus Fault Handler
- DCD UsageFault_Handler ; Usage Fault Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SVC_Handler ; SVCall Handler
- DCD DebugMon_Handler ; Debug Monitor Handler
- DCD 0 ; Reserved
- DCD PendSV_Handler ; PendSV Handler
- DCD SysTick_Handler ; SysTick Handler
-
- ; External Interrupts
- DCD CSV_IRQHandler ; Clock Super Visor
- DCD SWDT_IRQHandler ; Software Watchdog Timer
- DCD LVD_IRQHandler ; Low Voltage Detector
- DCD WFG_IRQHandler ; Wave Form Generator
- DCD EXINT0_7_IRQHandler ; External Interrupt Request ch.0 to ch.7
- DCD EXINT8_15_IRQHandler ; External Interrupt Request ch.8 to ch.15
- DCD DTIM_QDU_IRQHandler ; Dual Timer / Quad Decoder
- DCD MFS0RX_IRQHandler ; MultiFunction Serial ch.0
- DCD MFS0TX_IRQHandler ; MultiFunction Serial ch.0
- DCD MFS1RX_IRQHandler ; MultiFunction Serial ch.1
- DCD MFS1TX_IRQHandler ; MultiFunction Serial ch.1
- #ifdef RT_USING_UART2
- DCD MFS2RX_IRQHandler ; MultiFunction Serial ch.2
- #else
- DCD NULL_IRQHandler ; MultiFunction Serial ch.2
- #endif
- DCD MFS2TX_IRQHandler ; MultiFunction Serial ch.2
- DCD MFS3RX_IRQHandler ; MultiFunction Serial ch.3
- DCD MFS3TX_IRQHandler ; MultiFunction Serial ch.3
- DCD MFS4RX_IRQHandler ; MultiFunction Serial ch.4
- DCD MFS4TX_IRQHandler ; MultiFunction Serial ch.4
- DCD MFS5RX_IRQHandler ; MultiFunction Serial ch.5
- DCD MFS5TX_IRQHandler ; MultiFunction Serial ch.5
- DCD MFS6RX_IRQHandler ; MultiFunction Serial ch.6
- DCD MFS6TX_IRQHandler ; MultiFunction Serial ch.6
- DCD MFS7RX_IRQHandler ; MultiFunction Serial ch.7
- DCD MFS7TX_IRQHandler ; MultiFunction Serial ch.7
- DCD PPG_IRQHandler ; PPG
- DCD OSC_PLL_WC_IRQHandler ; OSC / PLL / Watch Counter
- DCD ADC0_IRQHandler ; ADC0
- DCD ADC1_IRQHandler ; ADC1
- DCD ADC2_IRQHandler ; ADC2
- DCD FRTIM_IRQHandler ; Free-run Timer
- DCD INCAP_IRQHandler ; Input Capture
- DCD OUTCOMP_IRQHandler ; Output Compare
- DCD BTIM_IRQHandler ; Base Timer ch.0 to ch.7
- DCD CAN0_IRQHandler ; CAN ch.0
- DCD CAN1_IRQHandler ; CAN ch.1
- DCD USBF_IRQHandler ; USB Function
- DCD USBF_USBH_IRQHandler ; USB Function / USB HOST
- DCD RESERVED_1_IRQHandler ; Reserved_1
- DCD RESERVED_2_IRQHandler ; Reserved_2
- DCD DMAC0_IRQHandler ; DMAC ch.0
- DCD DMAC1_IRQHandler ; DMAC ch.1
- DCD DMAC2_IRQHandler ; DMAC ch.2
- DCD DMAC3_IRQHandler ; DMAC ch.3
- DCD DMAC4_IRQHandler ; DMAC ch.4
- DCD DMAC5_IRQHandler ; DMAC ch.5
- DCD DMAC6_IRQHandler ; DMAC ch.6
- DCD DMAC7_IRQHandler ; DMAC ch.7
- DCD RESERVED_3_IRQHandler ; Reserved_3
- DCD RESERVED_4_IRQHandler ; Reserved_4
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- ;; Default interrupt handlers.
- ;;
- THUMB
- 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 SVC_Handler
- SECTION .text:CODE:REORDER(1)
- SVC_Handler
- B SVC_Handler
- PUBWEAK DebugMon_Handler
- SECTION .text:CODE:REORDER(1)
- DebugMon_Handler
- B DebugMon_Handler
- PUBWEAK PendSV_Handler
- SECTION .text:CODE:REORDER(1)
- PendSV_Handler
- B PendSV_Handler
- PUBWEAK SysTick_Handler
- SECTION .text:CODE:REORDER(1)
- SysTick_Handler
- B SysTick_Handler
- PUBWEAK CSV_IRQHandler
- SECTION .text:CODE:REORDER(1)
- CSV_IRQHandler
- B CSV_IRQHandler
- PUBWEAK SWDT_IRQHandler
- SECTION .text:CODE:REORDER(1)
- SWDT_IRQHandler
- B SWDT_IRQHandler
- PUBWEAK LVD_IRQHandler
- SECTION .text:CODE:REORDER(1)
- LVD_IRQHandler
- B LVD_IRQHandler
- PUBWEAK WFG_IRQHandler
- SECTION .text:CODE:REORDER(1)
- WFG_IRQHandler
- B WFG_IRQHandler
- PUBWEAK EXINT0_7_IRQHandler
- SECTION .text:CODE:REORDER(1)
- EXINT0_7_IRQHandler
- B EXINT0_7_IRQHandler
- PUBWEAK EXINT8_15_IRQHandler
- SECTION .text:CODE:REORDER(1)
- EXINT8_15_IRQHandler
- B EXINT8_15_IRQHandler
- PUBWEAK DTIM_QDU_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DTIM_QDU_IRQHandler
- B DTIM_QDU_IRQHandler
- PUBWEAK MFS0RX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS0RX_IRQHandler
- B MFS0RX_IRQHandler
- PUBWEAK MFS0TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS0TX_IRQHandler
- B MFS0TX_IRQHandler
- PUBWEAK MFS1RX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS1RX_IRQHandler
- B MFS1RX_IRQHandler
- PUBWEAK MFS1TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS1TX_IRQHandler
- B MFS1TX_IRQHandler
- PUBWEAK NULL_IRQHandler
- SECTION .text:CODE:REORDER(1)
- NULL_IRQHandler
- B NULL_IRQHandler
- PUBWEAK MFS2TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS2TX_IRQHandler
- B MFS2TX_IRQHandler
- PUBWEAK MFS3RX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS3RX_IRQHandler
- B MFS3RX_IRQHandler
- PUBWEAK MFS3TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS3TX_IRQHandler
- B MFS3TX_IRQHandler
- PUBWEAK MFS4RX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS4RX_IRQHandler
- B MFS4RX_IRQHandler
- PUBWEAK MFS4TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS4TX_IRQHandler
- B MFS4TX_IRQHandler
- PUBWEAK MFS5RX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS5RX_IRQHandler
- B MFS5RX_IRQHandler
- PUBWEAK MFS5TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS5TX_IRQHandler
- B MFS5TX_IRQHandler
- PUBWEAK MFS6RX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS6RX_IRQHandler
- B MFS6RX_IRQHandler
- PUBWEAK MFS6TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS6TX_IRQHandler
- B MFS6TX_IRQHandler
- PUBWEAK MFS7RX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS7RX_IRQHandler
- B MFS7RX_IRQHandler
- PUBWEAK MFS7TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
- MFS7TX_IRQHandler
- B MFS7TX_IRQHandler
- PUBWEAK PPG_IRQHandler
- SECTION .text:CODE:REORDER(1)
- PPG_IRQHandler
- B PPG_IRQHandler
- PUBWEAK OSC_PLL_WC_IRQHandler
- SECTION .text:CODE:REORDER(1)
- OSC_PLL_WC_IRQHandler
- B OSC_PLL_WC_IRQHandler
- PUBWEAK ADC0_IRQHandler
- SECTION .text:CODE:REORDER(1)
- ADC0_IRQHandler
- B ADC0_IRQHandler
- PUBWEAK ADC1_IRQHandler
- SECTION .text:CODE:REORDER(1)
- ADC1_IRQHandler
- B ADC1_IRQHandler
- PUBWEAK ADC2_IRQHandler
- SECTION .text:CODE:REORDER(1)
- ADC2_IRQHandler
- B ADC2_IRQHandler
- PUBWEAK FRTIM_IRQHandler
- SECTION .text:CODE:REORDER(1)
- FRTIM_IRQHandler
- B FRTIM_IRQHandler
- PUBWEAK INCAP_IRQHandler
- SECTION .text:CODE:REORDER(1)
- INCAP_IRQHandler
- B INCAP_IRQHandler
- PUBWEAK OUTCOMP_IRQHandler
- SECTION .text:CODE:REORDER(1)
- OUTCOMP_IRQHandler
- B OUTCOMP_IRQHandler
- PUBWEAK BTIM_IRQHandler
- SECTION .text:CODE:REORDER(1)
- BTIM_IRQHandler
- B BTIM_IRQHandler
- PUBWEAK CAN0_IRQHandler
- SECTION .text:CODE:REORDER(1)
- CAN0_IRQHandler
- B CAN0_IRQHandler
- PUBWEAK CAN1_IRQHandler
- SECTION .text:CODE:REORDER(1)
- CAN1_IRQHandler
- B CAN1_IRQHandler
- PUBWEAK USBF_IRQHandler
- SECTION .text:CODE:REORDER(1)
- USBF_IRQHandler
- B USBF_IRQHandler
- PUBWEAK USBF_USBH_IRQHandler
- SECTION .text:CODE:REORDER(1)
- USBF_USBH_IRQHandler
- B USBF_USBH_IRQHandler
- PUBWEAK RESERVED_1_IRQHandler
- SECTION .text:CODE:REORDER(1)
- RESERVED_1_IRQHandler
- B RESERVED_1_IRQHandler
- PUBWEAK RESERVED_2_IRQHandler
- SECTION .text:CODE:REORDER(1)
- RESERVED_2_IRQHandler
- B RESERVED_2_IRQHandler
- PUBWEAK DMAC0_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC0_IRQHandler
- B DMAC0_IRQHandler
- PUBWEAK DMAC1_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC1_IRQHandler
- B DMAC1_IRQHandler
- PUBWEAK DMAC2_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC2_IRQHandler
- B DMAC2_IRQHandler
- PUBWEAK DMAC3_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC3_IRQHandler
- B DMAC3_IRQHandler
- PUBWEAK DMAC4_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC4_IRQHandler
- B DMAC4_IRQHandler
- PUBWEAK DMAC5_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC5_IRQHandler
- B DMAC5_IRQHandler
- PUBWEAK DMAC6_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC6_IRQHandler
- B DMAC6_IRQHandler
- PUBWEAK DMAC7_IRQHandler
- SECTION .text:CODE:REORDER(1)
- DMAC7_IRQHandler
- B DMAC7_IRQHandler
- PUBWEAK RESERVED_3_IRQHandler
- SECTION .text:CODE:REORDER(1)
- RESERVED_3_IRQHandler
- B RESERVED_3_IRQHandler
- PUBWEAK RESERVED_4_IRQHandler
- SECTION .text:CODE:REORDER(1)
- RESERVED_4_IRQHandler
- B RESERVED_4_IRQHandler
- END
|