]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s
Update copyright date ready for tagging V10.1.0.
[freertos] / FreeRTOS / Demo / ARM9_STR91X_IAR / 91x_vect_IAR.s
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
7 ;*                      handlers.\r
8 ;*******************************************************************************\r
9 ; History:\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
19 \r
20 #include "FreeRTOSConfig.h"\r
21 #include "ISR_Support.h"\r
22 \r
23     MODULE      ?RESET\r
24         COMMON  INTVEC:CODE(2)                  \r
25         CODE32\r
26     EXPORT LINK\r
27 \r
28 VectorAddress                   EQU    0xFFFFF030  ; VIC Vector address register address.\r
29 VectorAddressDaisy              EQU    0xFC000030  ; Daisy VIC Vector address register\r
30                                           ; address.\r
31 LINK                                    EQU    0x0\r
32 \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
35 \r
36 ;*******************************************************************************\r
37 ;                                  MACRO\r
38 ;*******************************************************************************\r
39 \r
40 ;*******************************************************************************\r
41 ;            Import  the __program_start address from 91x_init.s\r
42 ;*******************************************************************************\r
43 \r
44         IMPORT  __program_start\r
45 \r
46 ;*******************************************************************************\r
47 ;                      Import exception handlers\r
48 ;*******************************************************************************\r
49 \r
50                 IMPORT  vPortYieldProcessor             ; FreeRTOS SWI handler\r
51 \r
52 ;*******************************************************************************\r
53 ;            Export Peripherals IRQ handlers table address\r
54 ;*******************************************************************************\r
55 \r
56 ;*******************************************************************************\r
57 ;                        Exception vectors\r
58 ;*******************************************************************************\r
59 \r
60         LDR     PC, Reset_Addr\r
61         LDR     PC, Undefined_Addr\r
62         LDR     PC, SWI_Addr\r
63         LDR     PC, Prefetch_Addr\r
64         LDR     PC, Abort_Addr\r
65         NOP                             ; Reserved vector\r
66         LDR     PC, IRQ_Addr\r
67         LDR     PC, FIQ_Addr\r
68 \r
69 ;*******************************************************************************\r
70 ;               Exception handlers address table\r
71 ;*******************************************************************************\r
72 \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
81 \r
82 \r
83 ;*******************************************************************************\r
84 ;                         Exception Handlers\r
85 ;*******************************************************************************\r
86 \r
87 ; - NOTE -\r
88 ; The IRQ and SWI handlers are the only managed exception.\r
89 \r
90 UndefinedHandler\r
91                 b       UndefinedHandler\r
92 \r
93 PrefetchAbortHandler\r
94                 b       PrefetchAbortHandler\r
95 \r
96 DataAbortHandler\r
97                 b       DataAbortHandler\r
98 \r
99 FIQHandler\r
100                 b       FIQHandler\r
101 \r
102 DefaultISR\r
103                 b       DefaultISR\r
104 \r
105 \r
106 ;*******************************************************************************\r
107 ;* Function Name  : IRQHandler\r
108 ;* Description    : This function called when IRQ exception is entered.\r
109 ;* Input          : none\r
110 ;* Output         : none\r
111 ;*******************************************************************************\r
112 \r
113 IRQHandler\r
114         portSAVE_CONTEXT                                        ; Save the context of the current task.\r
115 \r
116         LDR    r0, = VectorAddress\r
117         LDR    r0, [r0]                                         ; Read the routine address\r
118         LDR    r1, = VectorAddressDaisy\r
119         LDR    r1, [r1]\r
120         MOV        lr, pc\r
121         bx         r0\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
126         \r
127         portRESTORE_CONTEXT                                     ; Restore the context of the selected task.\r
128 \r
129         \r
130         LTORG\r
131         \r
132         END\r
133 \r
134 ;******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****\r