]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v6_1/src/vectors.c
xTaskGenericNotify() now sets xYieldPending to pdTRUE even when the 'higher priority...
[freertos] / FreeRTOS / Demo / CORTEX_A53_64-bit_UltraScale_MPSoC / RTOSDemo_A53_bsp / psu_cortexa53_0 / libsrc / standalone_v6_1 / src / vectors.c
1 /******************************************************************************
2 *
3 * Copyright (C) 2009 - 2016 Xilinx, Inc.  All rights reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
14 *
15 * Use of the Software is limited solely to applications:
16 * (a) running on a Xilinx device, or
17 * (b) that interact with a Xilinx device through a bus or interconnect.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * XILINX  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
24 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25 * SOFTWARE.
26 *
27 * Except as contained in this notice, the name of the Xilinx shall not be used
28 * in advertising or otherwise to promote the sale, use or other dealings in
29 * this Software without prior written authorization from Xilinx.
30 *
31 ******************************************************************************/
32 /*****************************************************************************/
33 /**
34 * @file vectors.c
35 *
36 * This file contains the C level vectors for the ARM Cortex A9 core.
37 *
38 * <pre>
39 * MODIFICATION HISTORY:
40 *
41 * Ver   Who  Date     Changes
42 * ----- ---- -------- ---------------------------------------------------
43 * 1.00a ecm  10/20/09 Initial version, moved over from bsp area
44 * 6.0   mus  27/07/16 Consolidated vectors for a53,a9 and r5 processor
45 *                     and added UndefinedException for a53 32 bit and r5
46 *                     processor
47 * </pre>
48 *
49 * @note
50 *
51 * None.
52 *
53 ******************************************************************************/
54 /***************************** Include Files *********************************/
55
56 #include "xil_exception.h"
57 #include "vectors.h"
58
59 /************************** Constant Definitions *****************************/
60
61 /**************************** Type Definitions *******************************/
62
63 typedef struct {
64         Xil_ExceptionHandler Handler;
65         void *Data;
66 } XExc_VectorTableEntry;
67
68 /***************** Macros (Inline Functions) Definitions *********************/
69
70 /************************** Variable Definitions *****************************/
71
72 extern XExc_VectorTableEntry XExc_VectorTable[];
73
74 /************************** Function Prototypes ******************************/
75
76
77 /*****************************************************************************/
78 /**
79 *
80 * This is the C level wrapper for the FIQ interrupt called from the vectors.s
81 * file.
82 *
83 * @param        None.
84 *
85 * @return       None.
86 *
87 * @note         None.
88 *
89 ******************************************************************************/
90 void FIQInterrupt(void)
91 {
92         XExc_VectorTable[XIL_EXCEPTION_ID_FIQ_INT].Handler(XExc_VectorTable[
93                                         XIL_EXCEPTION_ID_FIQ_INT].Data);
94 }
95
96 /*****************************************************************************/
97 /**
98 *
99 * This is the C level wrapper for the IRQ interrupt called from the vectors.s
100 * file.
101 *
102 * @param        None.
103 *
104 * @return       None.
105 *
106 * @note         None.
107 *
108 ******************************************************************************/
109 void IRQInterrupt(void)
110 {
111         XExc_VectorTable[XIL_EXCEPTION_ID_IRQ_INT].Handler(XExc_VectorTable[
112                                         XIL_EXCEPTION_ID_IRQ_INT].Data);
113 }
114
115 #if !defined (__aarch64__)
116 /*****************************************************************************/
117 /**
118 *
119 * This is the C level wrapper for the Undefined exception called from the
120 * vectors.s file.
121 *
122 * @param        None.
123 *
124 * @return       None.
125 *
126 * @note         None.
127 *
128 ******************************************************************************/
129 void UndefinedException(void)
130 {
131         XExc_VectorTable[XIL_EXCEPTION_ID_UNDEFINED_INT].Handler(XExc_VectorTable[
132                                         XIL_EXCEPTION_ID_UNDEFINED_INT].Data);
133 }
134
135 /*****************************************************************************/
136 /**
137 *
138 * This is the C level wrapper for the SW Interrupt called from the vectors.s
139 * file.
140 *
141 * @param        None.
142 *
143 * @return       None.
144 *
145 * @note         None.
146 *
147 ******************************************************************************/
148 void SWInterrupt(void)
149 {
150         XExc_VectorTable[XIL_EXCEPTION_ID_SWI_INT].Handler(XExc_VectorTable[
151                                         XIL_EXCEPTION_ID_SWI_INT].Data);
152 }
153
154 /*****************************************************************************/
155 /**
156 *
157 * This is the C level wrapper for the DataAbort Interrupt called from the
158 * vectors.s file.
159 *
160 * @param        None.
161 *
162 * @return       None.
163 *
164 * @note         None.
165 *
166 ******************************************************************************/
167 void DataAbortInterrupt(void)
168 {
169         XExc_VectorTable[XIL_EXCEPTION_ID_DATA_ABORT_INT].Handler(
170                 XExc_VectorTable[XIL_EXCEPTION_ID_DATA_ABORT_INT].Data);
171 }
172
173 /*****************************************************************************/
174 /**
175 *
176 * This is the C level wrapper for the PrefetchAbort Interrupt called from the
177 * vectors.s file.
178 *
179 * @param        None.
180 *
181 * @return       None.
182 *
183 * @note         None.
184 *
185 ******************************************************************************/
186 void PrefetchAbortInterrupt(void)
187 {
188         XExc_VectorTable[XIL_EXCEPTION_ID_PREFETCH_ABORT_INT].Handler(
189                 XExc_VectorTable[XIL_EXCEPTION_ID_PREFETCH_ABORT_INT].Data);
190 }
191 #else
192
193 /*****************************************************************************/
194 /**
195 *
196 * This is the C level wrapper for the Synchronous Interrupt called from the vectors.s
197 * file.
198 *
199 * @param        None.
200 *
201 * @return       None.
202 *
203 * @note         None.
204 *
205 ******************************************************************************/
206 void SynchronousInterrupt(void)
207 {
208         XExc_VectorTable[XIL_EXCEPTION_ID_SYNC_INT].Handler(XExc_VectorTable[
209                                         XIL_EXCEPTION_ID_SYNC_INT].Data);
210 }
211
212 /*****************************************************************************/
213 /**
214 *
215 * This is the C level wrapper for the SError Interrupt called from the
216 * vectors.s file.
217 *
218 * @param        None.
219 *
220 * @return       None.
221 *
222 * @note         None.
223 *
224 ******************************************************************************/
225 void SErrorInterrupt(void)
226 {
227         XExc_VectorTable[XIL_EXCEPTION_ID_SERROR_ABORT_INT].Handler(
228                 XExc_VectorTable[XIL_EXCEPTION_ID_SERROR_ABORT_INT].Data);
229 }
230
231 #endif