;******************** (C) COPYRIGHT 2005 STMicroelectronics ******************** ;* File Name : 91x_vect.s ;* Author : MCD Application Team ;* Date First Issued : 10/25/2005 : Beta Version V0.1 ;* Description : This File used to initialize the exception and IRQ ;* vectors, and to enter/return to/from exceptions ;* handlers. ;******************************************************************************* ; History: ; 10/25/2005 : Beta Version V0.1 ;******************************************************************************* ; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH ; CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS ; A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT ; OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT ; OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION ; CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. ;******************************************************************************/ #include "FreeRTOSConfig.h" #include "ISR_Support.h" MODULE ?RESET COMMON INTVEC:CODE(2) CODE32 EXPORT LINK VectorAddress EQU 0xFFFFF030 ; VIC Vector address register address. VectorAddressDaisy EQU 0xFC000030 ; Daisy VIC Vector address register ; address. LINK EQU 0x0 I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled ;******************************************************************************* ; MACRO ;******************************************************************************* ;******************************************************************************* ; Import the __program_start address from 91x_init.s ;******************************************************************************* IMPORT __program_start ;******************************************************************************* ; Import exception handlers ;******************************************************************************* IMPORT vPortYieldProcessor ; FreeRTOS SWI handler ;******************************************************************************* ; Export Peripherals IRQ handlers table address ;******************************************************************************* ;******************************************************************************* ; Exception vectors ;******************************************************************************* LDR PC, Reset_Addr LDR PC, Undefined_Addr LDR PC, SWI_Addr LDR PC, Prefetch_Addr LDR PC, Abort_Addr NOP ; Reserved vector LDR PC, IRQ_Addr LDR PC, FIQ_Addr ;******************************************************************************* ; Exception handlers address table ;******************************************************************************* Reset_Addr DCD __program_start Undefined_Addr DCD UndefinedHandler SWI_Addr DCD vPortYieldProcessor Prefetch_Addr DCD PrefetchAbortHandler Abort_Addr DCD DataAbortHandler DCD 0 ; Reserved vector IRQ_Addr DCD IRQHandler FIQ_Addr DCD FIQHandler ;******************************************************************************* ; Exception Handlers ;******************************************************************************* ; - NOTE - ; The IRQ and SWI handlers are the only managed exception. UndefinedHandler b UndefinedHandler PrefetchAbortHandler b PrefetchAbortHandler DataAbortHandler b DataAbortHandler FIQHandler b FIQHandler DefaultISR b DefaultISR ;******************************************************************************* ;* Function Name : IRQHandler ;* Description : This function called when IRQ exception is entered. ;* Input : none ;* Output : none ;******************************************************************************* IRQHandler portSAVE_CONTEXT ; Save the context of the current task. LDR r0, = VectorAddress LDR r0, [r0] ; Read the routine address LDR r1, = VectorAddressDaisy LDR r1, [r1] MOV lr, pc bx r0 LDR r0, = VectorAddress ; Write to the VectorAddress to clear the STR r0, [r0] ; respective interrupt in the internal interrupt LDR r1, = VectorAddressDaisy ; Write to the VectorAddressDaisy to clear the STR r1,[r1] ; respective interrupt in the internal interrupt portRESTORE_CONTEXT ; Restore the context of the selected task. LTORG END ;******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****