]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/arm/cpu/armv8/exceptions.S
remove unnecessary version.h includes
[karo-tx-uboot.git] / arch / arm / cpu / armv8 / exceptions.S
1 /*
2  * (C) Copyright 2013
3  * David Feng <fenghua@phytium.com.cn>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #include <asm-offsets.h>
9 #include <config.h>
10 #include <asm/ptrace.h>
11 #include <asm/macro.h>
12 #include <linux/linkage.h>
13
14 /*
15  * Enter Exception.
16  * This will save the processor state that is ELR/X0~X30
17  * to the stack frame.
18  */
19 .macro  exception_entry
20         stp     x29, x30, [sp, #-16]!
21         stp     x27, x28, [sp, #-16]!
22         stp     x25, x26, [sp, #-16]!
23         stp     x23, x24, [sp, #-16]!
24         stp     x21, x22, [sp, #-16]!
25         stp     x19, x20, [sp, #-16]!
26         stp     x17, x18, [sp, #-16]!
27         stp     x15, x16, [sp, #-16]!
28         stp     x13, x14, [sp, #-16]!
29         stp     x11, x12, [sp, #-16]!
30         stp     x9, x10, [sp, #-16]!
31         stp     x7, x8, [sp, #-16]!
32         stp     x5, x6, [sp, #-16]!
33         stp     x3, x4, [sp, #-16]!
34         stp     x1, x2, [sp, #-16]!
35
36         /* Could be running at EL3/EL2/EL1 */
37         switch_el x11, 3f, 2f, 1f
38 3:      mrs     x1, esr_el3
39         mrs     x2, elr_el3
40         b       0f
41 2:      mrs     x1, esr_el2
42         mrs     x2, elr_el2
43         b       0f
44 1:      mrs     x1, esr_el1
45         mrs     x2, elr_el1
46 0:
47         stp     x2, x0, [sp, #-16]!
48         mov     x0, sp
49 .endm
50
51 /*
52  * Exception vectors.
53  */
54         .align  11
55         .globl  vectors
56 vectors:
57         .align  7
58         b       _do_bad_sync    /* Current EL Synchronous Thread */
59
60         .align  7
61         b       _do_bad_irq     /* Current EL IRQ Thread */
62
63         .align  7
64         b       _do_bad_fiq     /* Current EL FIQ Thread */
65
66         .align  7
67         b       _do_bad_error   /* Current EL Error Thread */
68
69         .align  7
70         b       _do_sync        /* Current EL Synchronous Handler */
71
72         .align  7
73         b       _do_irq         /* Current EL IRQ Handler */
74
75         .align  7
76         b       _do_fiq         /* Current EL FIQ Handler */
77
78         .align  7
79         b       _do_error       /* Current EL Error Handler */
80
81
82 _do_bad_sync:
83         exception_entry
84         bl      do_bad_sync
85
86 _do_bad_irq:
87         exception_entry
88         bl      do_bad_irq
89
90 _do_bad_fiq:
91         exception_entry
92         bl      do_bad_fiq
93
94 _do_bad_error:
95         exception_entry
96         bl      do_bad_error
97
98 _do_sync:
99         exception_entry
100         bl      do_sync
101
102 _do_irq:
103         exception_entry
104         bl      do_irq
105
106 _do_fiq:
107         exception_entry
108         bl      do_fiq
109
110 _do_error:
111         exception_entry
112         bl      do_error