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 ******************************************************************************/
56 .globl _freertos_vector_table
59 .globl SErrorInterrupt
60 .globl SynchronousInterrupt
64 /******************************************************************************
65 * Vector table to use when FreeRTOS is running.
66 *****************************************************************************/
68 .section .freertos_vectors
72 _freertos_vector_table:
73 b FreeRTOS_SWI_Handler
75 .org (FREERTOS_VBAR + 0x80)
76 b FreeRTOS_IRQ_Handler
78 .org (FREERTOS_VBAR + 0x100)
81 .org (FREERTOS_VBAR + 0x180)
84 .org (FREERTOS_VBAR + 0x200)
85 b FreeRTOS_SWI_Handler
87 .org (FREERTOS_VBAR + 0x280)
88 b FreeRTOS_IRQ_Handler
90 .org (FREERTOS_VBAR + 0x300)
93 .org (FREERTOS_VBAR + 0x380)
96 .org (FREERTOS_VBAR + 0x400)
99 .org (FREERTOS_VBAR + 0x480)
102 .org (FREERTOS_VBAR + 0x500)
105 .org (FREERTOS_VBAR + 0x580)
108 .org (FREERTOS_VBAR + 0x600)
111 .org (FREERTOS_VBAR + 0x680)
114 .org (FREERTOS_VBAR + 0x700)
117 .org (FREERTOS_VBAR + 0x780)
120 .org (FREERTOS_VBAR + 0x800)
125 SynchronousInterruptHandler:
126 stp X0,X1, [sp,#-0x10]!
127 stp X2,X3, [sp,#-0x10]!
128 stp X4,X5, [sp,#-0x10]!
129 stp X6,X7, [sp,#-0x10]!
130 stp X8,X9, [sp,#-0x10]!
131 stp X10,X11, [sp,#-0x10]!
132 stp X12,X13, [sp,#-0x10]!
133 stp X14,X15, [sp,#-0x10]!
134 stp X16,X17, [sp,#-0x10]!
135 stp X18,X19, [sp,#-0x10]!
136 stp X29,X30, [sp,#-0x10]!
138 bl SynchronousInterrupt
140 ldp X29,X30, [sp], #0x10
141 ldp X18,X19, [sp], #0x10
142 ldp X16,X17, [sp], #0x10
143 ldp X14,X15, [sp], #0x10
144 ldp X12,X13, [sp], #0x10
145 ldp X10,X11, [sp], #0x10
146 ldp X8,X9, [sp], #0x10
147 ldp X6,X7, [sp], #0x10
148 ldp X4,X5, [sp], #0x10
149 ldp X2,X3, [sp], #0x10
150 ldp X0,X1, [sp], #0x10
155 stp X0,X1, [sp,#-0x10]!
156 stp X2,X3, [sp,#-0x10]!
157 stp X4,X5, [sp,#-0x10]!
158 stp X6,X7, [sp,#-0x10]!
159 stp X8,X9, [sp,#-0x10]!
160 stp X10,X11, [sp,#-0x10]!
161 stp X12,X13, [sp,#-0x10]!
162 stp X14,X15, [sp,#-0x10]!
163 stp X16,X17, [sp,#-0x10]!
164 stp X18,X19, [sp,#-0x10]!
165 stp X29,X30, [sp,#-0x10]!
169 ldp X29,X30, [sp], #0x10
170 ldp X18,X19, [sp], #0x10
171 ldp X16,X17, [sp], #0x10
172 ldp X14,X15, [sp], #0x10
173 ldp X12,X13, [sp], #0x10
174 ldp X10,X11, [sp], #0x10
175 ldp X8,X9, [sp], #0x10
176 ldp X6,X7, [sp], #0x10
177 ldp X4,X5, [sp], #0x10
178 ldp X2,X3, [sp], #0x10
179 ldp X0,X1, [sp], #0x10
185 stp X0,X1, [sp,#-0x10]!
186 stp X2,X3, [sp,#-0x10]!
187 stp X4,X5, [sp,#-0x10]!
188 stp X6,X7, [sp,#-0x10]!
189 stp X8,X9, [sp,#-0x10]!
190 stp X10,X11, [sp,#-0x10]!
191 stp X12,X13, [sp,#-0x10]!
192 stp X14,X15, [sp,#-0x10]!
193 stp X16,X17, [sp,#-0x10]!
194 stp X18,X19, [sp,#-0x10]!
195 stp X29,X30, [sp,#-0x10]!
199 ldp X29,X30, [sp], #0x10
200 ldp X18,X19, [sp], #0x10
201 ldp X16,X17, [sp], #0x10
202 ldp X14,X15, [sp], #0x10
203 ldp X12,X13, [sp], #0x10
204 ldp X10,X11, [sp], #0x10
205 ldp X8,X9, [sp], #0x10
206 ldp X6,X7, [sp], #0x10
207 ldp X4,X5, [sp], #0x10
208 ldp X2,X3, [sp], #0x10
209 ldp X0,X1, [sp], #0x10
213 SErrorInterruptHandler:
215 stp X0,X1, [sp,#-0x10]!
216 stp X2,X3, [sp,#-0x10]!
217 stp X4,X5, [sp,#-0x10]!
218 stp X6,X7, [sp,#-0x10]!
219 stp X8,X9, [sp,#-0x10]!
220 stp X10,X11, [sp,#-0x10]!
221 stp X12,X13, [sp,#-0x10]!
222 stp X14,X15, [sp,#-0x10]!
223 stp X16,X17, [sp,#-0x10]!
224 stp X18,X19, [sp,#-0x10]!
225 stp X29,X30, [sp,#-0x10]!
229 ldp X29,X30, [sp], #0x10
230 ldp X18,X19, [sp], #0x10
231 ldp X16,X17, [sp], #0x10
232 ldp X14,X15, [sp], #0x10
233 ldp X12,X13, [sp], #0x10
234 ldp X10,X11, [sp], #0x10
235 ldp X8,X9, [sp], #0x10
236 ldp X6,X7, [sp], #0x10
237 ldp X4,X5, [sp], #0x10
238 ldp X2,X3, [sp], #0x10
239 ldp X0,X1, [sp], #0x10