]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53/src/FreeRTOS_asm_vectors.S
Previously the MPSoC Cortex-A53 demo was updated to the latest Xilinx SDK tools to...
[freertos] / FreeRTOS / Demo / CORTEX_A53_64-bit_UltraScale_MPSoC / RTOSDemo_A53 / src / FreeRTOS_asm_vectors.S
1 /******************************************************************************
2 *
3 * Copyright (C) 2014 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 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
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 asm_vectors.s
35 *
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.
39 *
40 * <pre>
41 * MODIFICATION HISTORY:
42 *
43 * Ver   Who     Date     Changes
44 * ----- ------- -------- ---------------------------------------------------
45 * 5.00  pkp     5/21/14 Initial version
46 * </pre>
47 *
48 * @note
49 *
50 * None.
51 *
52 ******************************************************************************/
53
54
55
56 .org 0
57 .text
58
59 .globl _boot
60 .globl _vector_table
61 .globl _freertos_vector_table
62
63 .globl FIQInterrupt
64 .globl IRQInterrupt
65 .globl SErrorInterrupt
66 .globl SynchronousInterrupt
67
68
69 .org 0
70
71 .section .vectors, "a"
72
73 _vector_table:
74
75 .set    VBAR, _vector_table
76
77 .org VBAR
78         b       _boot
79
80 .org (VBAR + 0x80)
81         b       .
82
83 .org (VBAR + 0x100)
84         b       .
85
86 .org (VBAR + 0x180)
87         b       .
88
89
90 .org (VBAR + 0x200)
91         b       .
92
93 .org (VBAR + 0x280)
94         b       .
95
96 .org (VBAR + 0x300)
97         b       .
98
99 .org (VBAR + 0x380)
100         b       .
101
102
103
104 .org (VBAR + 0x400)
105         b       .
106
107 .org (VBAR + 0x480)
108         b       .
109
110 .org (VBAR + 0x500)
111         b       .
112
113 .org (VBAR + 0x580)
114         b       .
115
116 .org (VBAR + 0x600)
117         b       .
118
119 .org (VBAR + 0x680)
120         b       .
121
122 .org (VBAR + 0x700)
123         b       .
124
125 .org (VBAR + 0x780)
126         b       .
127
128
129
130 /******************************************************************************
131  * Vector table to use when FreeRTOS is running.
132  *****************************************************************************/
133 .set    FREERTOS_VBAR, (VBAR+0x1000)
134
135 .org(FREERTOS_VBAR)
136 _freertos_vector_table:
137         b       FreeRTOS_SWI_Handler
138
139 .org (FREERTOS_VBAR + 0x80)
140         b       FreeRTOS_IRQ_Handler
141
142 .org (FREERTOS_VBAR + 0x100)
143         b       .
144
145 .org (FREERTOS_VBAR + 0x180)
146         b       .
147
148 .org (FREERTOS_VBAR + 0x200)
149         b       FreeRTOS_SWI_Handler
150
151 .org (FREERTOS_VBAR + 0x280)
152         b       FreeRTOS_IRQ_Handler
153
154 .org (FREERTOS_VBAR + 0x300)
155         b       .
156
157 .org (FREERTOS_VBAR + 0x380)
158         b       .
159
160 .org (FREERTOS_VBAR + 0x400)
161         b       .
162
163 .org (FREERTOS_VBAR + 0x480)
164         b       .
165
166 .org (FREERTOS_VBAR + 0x500)
167         b       .
168
169 .org (FREERTOS_VBAR + 0x580)
170         b       .
171
172 .org (FREERTOS_VBAR + 0x600)
173         b       .
174
175 .org (FREERTOS_VBAR + 0x680)
176         b       .
177
178 .org (FREERTOS_VBAR + 0x700)
179         b       .
180
181 .org (FREERTOS_VBAR + 0x780)
182         b       .
183
184 .org (FREERTOS_VBAR + 0x800)
185
186
187
188 #if 0
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]!
201
202         bl      SynchronousInterrupt
203
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
215
216         eret
217
218 IRQInterruptHandler:
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]!
230
231         bl      IRQInterrupt
232
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
244
245         eret
246
247 FIQInterruptHandler:
248
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]!
260
261         bl      FIQInterrupt
262
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
274
275         eret
276
277 SErrorInterruptHandler:
278
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]!
290
291         bl      SErrorInterrupt
292
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
304
305         eret
306 #endif
307
308 .end