| ;******************** (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**** |