]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53/src/FreeRTOS_asm_vectors.S
Update Zynq, MPSoc Cortex-A53 and MPSoc Cortex-R5 demo projects to build with the...
[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 .globl _freertos_vector_table
57 .globl FIQInterrupt
58 .globl IRQInterrupt
59 .globl SErrorInterrupt
60 .globl SynchronousInterrupt
61
62
63
64 /******************************************************************************
65  * Vector table to use when FreeRTOS is running.
66  *****************************************************************************/
67 .text
68 .section .freertos_vectors
69 .align 8
70 .set    FREERTOS_VBAR, .
71 .org(FREERTOS_VBAR)
72 _freertos_vector_table:
73         b       FreeRTOS_SWI_Handler
74
75 .org (FREERTOS_VBAR + 0x80)
76         b       FreeRTOS_IRQ_Handler
77
78 .org (FREERTOS_VBAR + 0x100)
79         b       .
80
81 .org (FREERTOS_VBAR + 0x180)
82         b       .
83
84 .org (FREERTOS_VBAR + 0x200)
85         b       FreeRTOS_SWI_Handler
86
87 .org (FREERTOS_VBAR + 0x280)
88         b       FreeRTOS_IRQ_Handler
89
90 .org (FREERTOS_VBAR + 0x300)
91         b       .
92
93 .org (FREERTOS_VBAR + 0x380)
94         b       .
95
96 .org (FREERTOS_VBAR + 0x400)
97         b       .
98
99 .org (FREERTOS_VBAR + 0x480)
100         b       .
101
102 .org (FREERTOS_VBAR + 0x500)
103         b       .
104
105 .org (FREERTOS_VBAR + 0x580)
106         b       .
107
108 .org (FREERTOS_VBAR + 0x600)
109         b       .
110
111 .org (FREERTOS_VBAR + 0x680)
112         b       .
113
114 .org (FREERTOS_VBAR + 0x700)
115         b       .
116
117 .org (FREERTOS_VBAR + 0x780)
118         b       .
119
120 .org (FREERTOS_VBAR + 0x800)
121
122
123
124
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]!
137
138         bl      SynchronousInterrupt
139
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
151
152         eret
153
154 IRQInterruptHandler:
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]!
166
167         bl      IRQInterrupt
168
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
180
181         eret
182
183 FIQInterruptHandler:
184
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]!
196
197         bl      FIQInterrupt
198
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
210
211         eret
212
213 SErrorInterruptHandler:
214
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]!
226
227         bl      SErrorInterrupt
228
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
240
241         eret
242
243 .end