]> git.sur5r.net Git - freertos/blob
2d779f5aecc4fd83f5d6c88fc8522e3c38c39a5d
[freertos] /
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
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 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
62 .globl FIQInterrupt
63 .globl IRQInterrupt
64 .globl SErrorInterrupt
65 .globl SynchronousInterrupt
66
67
68 .org 0
69
70 .section .vectors, "a"
71
72 _vector_table:
73
74 .set    VBAR, _vector_table
75 .org VBAR
76         b       _boot
77 .org (VBAR + 0x200)
78         b       SynchronousInterruptHandler
79
80 .org (VBAR + 0x280)
81         b       IRQInterruptHandler
82
83 .org (VBAR + 0x300)
84         b       FIQInterruptHandler
85
86 .org (VBAR + 0x380)
87         b       SErrorInterruptHandler
88
89
90 SynchronousInterruptHandler:
91         stp     X0,X1, [sp,#-0x10]!
92         stp     X2,X3, [sp,#-0x10]!
93         stp     X4,X5, [sp,#-0x10]!
94         stp     X6,X7, [sp,#-0x10]!
95         stp     X8,X9, [sp,#-0x10]!
96         stp     X10,X11, [sp,#-0x10]!
97         stp     X12,X13, [sp,#-0x10]!
98         stp     X14,X15, [sp,#-0x10]!
99         stp     X16,X17, [sp,#-0x10]!
100         stp     X18,X19, [sp,#-0x10]!
101         stp     X29,X30, [sp,#-0x10]!
102
103         bl      SynchronousInterrupt
104
105         ldp     X29,X30, [sp], #0x10
106         ldp     X18,X19, [sp], #0x10
107         ldp     X16,X17, [sp], #0x10
108         ldp     X14,X15, [sp], #0x10
109         ldp     X12,X13, [sp], #0x10
110         ldp     X10,X11, [sp], #0x10
111         ldp     X8,X9, [sp], #0x10
112         ldp     X6,X7, [sp], #0x10
113         ldp     X4,X5, [sp], #0x10
114         ldp     X2,X3, [sp], #0x10
115         ldp     X0,X1, [sp], #0x10
116
117         eret
118
119 IRQInterruptHandler:
120         stp     X0,X1, [sp,#-0x10]!
121         stp     X2,X3, [sp,#-0x10]!
122         stp     X4,X5, [sp,#-0x10]!
123         stp     X6,X7, [sp,#-0x10]!
124         stp     X8,X9, [sp,#-0x10]!
125         stp     X10,X11, [sp,#-0x10]!
126         stp     X12,X13, [sp,#-0x10]!
127         stp     X14,X15, [sp,#-0x10]!
128         stp     X16,X17, [sp,#-0x10]!
129         stp     X18,X19, [sp,#-0x10]!
130         stp     X29,X30, [sp,#-0x10]!
131
132         bl      IRQInterrupt
133
134         ldp     X29,X30, [sp], #0x10
135         ldp     X18,X19, [sp], #0x10
136         ldp     X16,X17, [sp], #0x10
137         ldp     X14,X15, [sp], #0x10
138         ldp     X12,X13, [sp], #0x10
139         ldp     X10,X11, [sp], #0x10
140         ldp     X8,X9, [sp], #0x10
141         ldp     X6,X7, [sp], #0x10
142         ldp     X4,X5, [sp], #0x10
143         ldp     X2,X3, [sp], #0x10
144         ldp     X0,X1, [sp], #0x10
145
146         eret
147
148 FIQInterruptHandler:
149
150         stp     X0,X1, [sp,#-0x10]!
151         stp     X2,X3, [sp,#-0x10]!
152         stp     X4,X5, [sp,#-0x10]!
153         stp     X6,X7, [sp,#-0x10]!
154         stp     X8,X9, [sp,#-0x10]!
155         stp     X10,X11, [sp,#-0x10]!
156         stp     X12,X13, [sp,#-0x10]!
157         stp     X14,X15, [sp,#-0x10]!
158         stp     X16,X17, [sp,#-0x10]!
159         stp     X18,X19, [sp,#-0x10]!
160         stp     X29,X30, [sp,#-0x10]!
161
162         bl      FIQInterrupt
163
164         ldp     X29,X30, [sp], #0x10
165         ldp     X18,X19, [sp], #0x10
166         ldp     X16,X17, [sp], #0x10
167         ldp     X14,X15, [sp], #0x10
168         ldp     X12,X13, [sp], #0x10
169         ldp     X10,X11, [sp], #0x10
170         ldp     X8,X9, [sp], #0x10
171         ldp     X6,X7, [sp], #0x10
172         ldp     X4,X5, [sp], #0x10
173         ldp     X2,X3, [sp], #0x10
174         ldp     X0,X1, [sp], #0x10
175
176         eret
177
178 SErrorInterruptHandler:
179
180         stp     X0,X1, [sp,#-0x10]!
181         stp     X2,X3, [sp,#-0x10]!
182         stp     X4,X5, [sp,#-0x10]!
183         stp     X6,X7, [sp,#-0x10]!
184         stp     X8,X9, [sp,#-0x10]!
185         stp     X10,X11, [sp,#-0x10]!
186         stp     X12,X13, [sp,#-0x10]!
187         stp     X14,X15, [sp,#-0x10]!
188         stp     X16,X17, [sp,#-0x10]!
189         stp     X18,X19, [sp,#-0x10]!
190         stp     X29,X30, [sp,#-0x10]!
191
192         bl      SErrorInterrupt
193
194         ldp     X29,X30, [sp], #0x10
195         ldp     X18,X19, [sp], #0x10
196         ldp     X16,X17, [sp], #0x10
197         ldp     X14,X15, [sp], #0x10
198         ldp     X12,X13, [sp], #0x10
199         ldp     X10,X11, [sp], #0x10
200         ldp     X8,X9, [sp], #0x10
201         ldp     X6,X7, [sp], #0x10
202         ldp     X4,X5, [sp], #0x10
203         ldp     X2,X3, [sp], #0x10
204         ldp     X0,X1, [sp], #0x10
205
206         eret
207
208 .end