1 /******************************************************************************
3 * Copyright (C) 2014 Xilinx, Inc. All rights reserved.
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:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
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.
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 THE
22 * XILINX CONSORTIUM 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
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.
31 ******************************************************************************/
32 /*****************************************************************************/
36 * This file contains the initial vector table for the Cortex A53 processor
37 * Currently NEON registers are not saved on stack if interrupt is taken.
38 * It will be implemented.
41 * MODIFICATION HISTORY:
43 * Ver Who Date Changes
44 * ----- ------- -------- ---------------------------------------------------
45 * 5.00 pkp 5/21/14 Initial version
52 ******************************************************************************/
61 .globl _freertos_vector_table
65 .globl SErrorInterrupt
66 .globl SynchronousInterrupt
71 .section .vectors, "a"
75 .set VBAR, _vector_table
130 /******************************************************************************
131 * Vector table to use when FreeRTOS is running.
132 *****************************************************************************/
133 .set FREERTOS_VBAR, (VBAR+0x1000)
136 _freertos_vector_table:
137 b FreeRTOS_SWI_Handler
139 .org (FREERTOS_VBAR + 0x80)
140 b FreeRTOS_IRQ_Handler
142 .org (FREERTOS_VBAR + 0x100)
145 .org (FREERTOS_VBAR + 0x180)
148 .org (FREERTOS_VBAR + 0x200)
149 b FreeRTOS_SWI_Handler
151 .org (FREERTOS_VBAR + 0x280)
152 b FreeRTOS_IRQ_Handler
154 .org (FREERTOS_VBAR + 0x300)
157 .org (FREERTOS_VBAR + 0x380)
160 .org (FREERTOS_VBAR + 0x400)
163 .org (FREERTOS_VBAR + 0x480)
166 .org (FREERTOS_VBAR + 0x500)
169 .org (FREERTOS_VBAR + 0x580)
172 .org (FREERTOS_VBAR + 0x600)
175 .org (FREERTOS_VBAR + 0x680)
178 .org (FREERTOS_VBAR + 0x700)
181 .org (FREERTOS_VBAR + 0x780)
184 .org (FREERTOS_VBAR + 0x800)
189 SynchronousInterruptHandler:
190 stp X0,X1, [sp,#-0x10]!
191 stp X2,X3, [sp,#-0x10]!
192 stp X4,X5, [sp,#-0x10]!
193 stp X6,X7, [sp,#-0x10]!
194 stp X8,X9, [sp,#-0x10]!
195 stp X10,X11, [sp,#-0x10]!
196 stp X12,X13, [sp,#-0x10]!
197 stp X14,X15, [sp,#-0x10]!
198 stp X16,X17, [sp,#-0x10]!
199 stp X18,X19, [sp,#-0x10]!
200 stp X29,X30, [sp,#-0x10]!
202 bl SynchronousInterrupt
204 ldp X29,X30, [sp], #0x10
205 ldp X18,X19, [sp], #0x10
206 ldp X16,X17, [sp], #0x10
207 ldp X14,X15, [sp], #0x10
208 ldp X12,X13, [sp], #0x10
209 ldp X10,X11, [sp], #0x10
210 ldp X8,X9, [sp], #0x10
211 ldp X6,X7, [sp], #0x10
212 ldp X4,X5, [sp], #0x10
213 ldp X2,X3, [sp], #0x10
214 ldp X0,X1, [sp], #0x10
219 stp X0,X1, [sp,#-0x10]!
220 stp X2,X3, [sp,#-0x10]!
221 stp X4,X5, [sp,#-0x10]!
222 stp X6,X7, [sp,#-0x10]!
223 stp X8,X9, [sp,#-0x10]!
224 stp X10,X11, [sp,#-0x10]!
225 stp X12,X13, [sp,#-0x10]!
226 stp X14,X15, [sp,#-0x10]!
227 stp X16,X17, [sp,#-0x10]!
228 stp X18,X19, [sp,#-0x10]!
229 stp X29,X30, [sp,#-0x10]!
233 ldp X29,X30, [sp], #0x10
234 ldp X18,X19, [sp], #0x10
235 ldp X16,X17, [sp], #0x10
236 ldp X14,X15, [sp], #0x10
237 ldp X12,X13, [sp], #0x10
238 ldp X10,X11, [sp], #0x10
239 ldp X8,X9, [sp], #0x10
240 ldp X6,X7, [sp], #0x10
241 ldp X4,X5, [sp], #0x10
242 ldp X2,X3, [sp], #0x10
243 ldp X0,X1, [sp], #0x10
249 stp X0,X1, [sp,#-0x10]!
250 stp X2,X3, [sp,#-0x10]!
251 stp X4,X5, [sp,#-0x10]!
252 stp X6,X7, [sp,#-0x10]!
253 stp X8,X9, [sp,#-0x10]!
254 stp X10,X11, [sp,#-0x10]!
255 stp X12,X13, [sp,#-0x10]!
256 stp X14,X15, [sp,#-0x10]!
257 stp X16,X17, [sp,#-0x10]!
258 stp X18,X19, [sp,#-0x10]!
259 stp X29,X30, [sp,#-0x10]!
263 ldp X29,X30, [sp], #0x10
264 ldp X18,X19, [sp], #0x10
265 ldp X16,X17, [sp], #0x10
266 ldp X14,X15, [sp], #0x10
267 ldp X12,X13, [sp], #0x10
268 ldp X10,X11, [sp], #0x10
269 ldp X8,X9, [sp], #0x10
270 ldp X6,X7, [sp], #0x10
271 ldp X4,X5, [sp], #0x10
272 ldp X2,X3, [sp], #0x10
273 ldp X0,X1, [sp], #0x10
277 SErrorInterruptHandler:
279 stp X0,X1, [sp,#-0x10]!
280 stp X2,X3, [sp,#-0x10]!
281 stp X4,X5, [sp,#-0x10]!
282 stp X6,X7, [sp,#-0x10]!
283 stp X8,X9, [sp,#-0x10]!
284 stp X10,X11, [sp,#-0x10]!
285 stp X12,X13, [sp,#-0x10]!
286 stp X14,X15, [sp,#-0x10]!
287 stp X16,X17, [sp,#-0x10]!
288 stp X18,X19, [sp,#-0x10]!
289 stp X29,X30, [sp,#-0x10]!
293 ldp X29,X30, [sp], #0x10
294 ldp X18,X19, [sp], #0x10
295 ldp X16,X17, [sp], #0x10
296 ldp X14,X15, [sp], #0x10
297 ldp X12,X13, [sp], #0x10
298 ldp X10,X11, [sp], #0x10
299 ldp X8,X9, [sp], #0x10
300 ldp X6,X7, [sp], #0x10
301 ldp X4,X5, [sp], #0x10
302 ldp X2,X3, [sp], #0x10
303 ldp X0,X1, [sp], #0x10