1 ;******************** (C) COPYRIGHT 2005 STMicroelectronics ********************
\r
2 ;* File Name : 91x_vect.s
\r
3 ;* Author : MCD Application Team
\r
4 ;* Date First Issued : 10/25/2005 : Beta Version V0.1
\r
5 ;* Description : This File used to initialize the exception and IRQ
\r
6 ;* vectors, and to enter/return to/from exceptions
\r
8 ;*******************************************************************************
\r
10 ; 10/25/2005 : Beta Version V0.1
\r
11 ;*******************************************************************************
\r
12 ; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
\r
13 ; CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
\r
14 ; A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
\r
15 ; OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
\r
16 ; OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
\r
17 ; CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
\r
18 ;******************************************************************************/
\r
20 #include "FreeRTOSConfig.h"
\r
21 #include "ISR_Support.h"
\r
24 COMMON INTVEC:CODE(2)
\r
28 VectorAddress EQU 0xFFFFF030 ; VIC Vector address register address.
\r
29 VectorAddressDaisy EQU 0xFC000030 ; Daisy VIC Vector address register
\r
33 I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled
\r
34 F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled
\r
36 ;*******************************************************************************
\r
38 ;*******************************************************************************
\r
40 ;*******************************************************************************
\r
41 ; Import the __program_start address from 91x_init.s
\r
42 ;*******************************************************************************
\r
44 IMPORT __program_start
\r
46 ;*******************************************************************************
\r
47 ; Import exception handlers
\r
48 ;*******************************************************************************
\r
50 IMPORT vPortYieldProcessor ; FreeRTOS SWI handler
\r
52 ;*******************************************************************************
\r
53 ; Export Peripherals IRQ handlers table address
\r
54 ;*******************************************************************************
\r
56 ;*******************************************************************************
\r
58 ;*******************************************************************************
\r
61 LDR PC, Undefined_Addr
\r
63 LDR PC, Prefetch_Addr
\r
65 NOP ; Reserved vector
\r
69 ;*******************************************************************************
\r
70 ; Exception handlers address table
\r
71 ;*******************************************************************************
\r
73 Reset_Addr DCD __program_start
\r
74 Undefined_Addr DCD UndefinedHandler
\r
75 SWI_Addr DCD vPortYieldProcessor
\r
76 Prefetch_Addr DCD PrefetchAbortHandler
\r
77 Abort_Addr DCD DataAbortHandler
\r
78 DCD 0 ; Reserved vector
\r
79 IRQ_Addr DCD IRQHandler
\r
80 FIQ_Addr DCD FIQHandler
\r
83 ;*******************************************************************************
\r
84 ; Exception Handlers
\r
85 ;*******************************************************************************
\r
88 ; The IRQ and SWI handlers are the only managed exception.
\r
93 PrefetchAbortHandler
\r
94 b PrefetchAbortHandler
\r
106 ;*******************************************************************************
\r
107 ;* Function Name : IRQHandler
\r
108 ;* Description : This function called when IRQ exception is entered.
\r
111 ;*******************************************************************************
\r
114 portSAVE_CONTEXT ; Save the context of the current task.
\r
116 LDR r0, = VectorAddress
\r
117 LDR r0, [r0] ; Read the routine address
\r
118 LDR r1, = VectorAddressDaisy
\r
122 LDR r0, = VectorAddress ; Write to the VectorAddress to clear the
\r
123 STR r0, [r0] ; respective interrupt in the internal interrupt
\r
124 LDR r1, = VectorAddressDaisy ; Write to the VectorAddressDaisy to clear the
\r
125 STR r1,[r1] ; respective interrupt in the internal interrupt
\r
127 portRESTORE_CONTEXT ; Restore the context of the selected task.
\r
134 ;******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****
\r