bl2_el3_exceptions.S 3.21 KB
Newer Older
Roberto Vargas's avatar
Roberto Vargas committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <arch.h>
#include <asm_macros.S>
#include <bl1.h>
#include <bl_common.h>
#include <context.h>

/* -----------------------------------------------------------------------------
 * Very simple stackless exception handlers used by BL2.
 * -----------------------------------------------------------------------------
 */
	.globl	bl2_el3_exceptions

vector_base bl2_el3_exceptions

	/* -----------------------------------------------------
	 * Current EL with SP0 : 0x0 - 0x200
	 * -----------------------------------------------------
	 */
vector_entry SynchronousExceptionSP0
	mov	x0, #SYNC_EXCEPTION_SP_EL0
	bl	plat_report_exception
	no_ret	plat_panic_handler
29
end_vector_entry SynchronousExceptionSP0
Roberto Vargas's avatar
Roberto Vargas committed
30
31
32
33
34

vector_entry IrqSP0
	mov	x0, #IRQ_SP_EL0
	bl	plat_report_exception
	no_ret	plat_panic_handler
35
end_vector_entry IrqSP0
Roberto Vargas's avatar
Roberto Vargas committed
36
37
38
39
40

vector_entry FiqSP0
	mov	x0, #FIQ_SP_EL0
	bl	plat_report_exception
	no_ret	plat_panic_handler
41
end_vector_entry FiqSP0
Roberto Vargas's avatar
Roberto Vargas committed
42
43
44
45
46

vector_entry SErrorSP0
	mov	x0, #SERROR_SP_EL0
	bl	plat_report_exception
	no_ret	plat_panic_handler
47
end_vector_entry SErrorSP0
Roberto Vargas's avatar
Roberto Vargas committed
48
49
50
51
52
53
54
55
56

	/* -----------------------------------------------------
	 * Current EL with SPx: 0x200 - 0x400
	 * -----------------------------------------------------
	 */
vector_entry SynchronousExceptionSPx
	mov	x0, #SYNC_EXCEPTION_SP_ELX
	bl	plat_report_exception
	no_ret	plat_panic_handler
57
end_vector_entry SynchronousExceptionSPx
Roberto Vargas's avatar
Roberto Vargas committed
58
59
60
61
62

vector_entry IrqSPx
	mov	x0, #IRQ_SP_ELX
	bl	plat_report_exception
	no_ret	plat_panic_handler
63
end_vector_entry IrqSPx
Roberto Vargas's avatar
Roberto Vargas committed
64
65
66
67
68

vector_entry FiqSPx
	mov	x0, #FIQ_SP_ELX
	bl	plat_report_exception
	no_ret	plat_panic_handler
69
end_vector_entry FiqSPx
Roberto Vargas's avatar
Roberto Vargas committed
70
71
72
73
74

vector_entry SErrorSPx
	mov	x0, #SERROR_SP_ELX
	bl	plat_report_exception
	no_ret	plat_panic_handler
75
end_vector_entry SErrorSPx
Roberto Vargas's avatar
Roberto Vargas committed
76
77
78
79
80
81
82
83
84

	/* -----------------------------------------------------
	 * Lower EL using AArch64 : 0x400 - 0x600
	 * -----------------------------------------------------
	 */
vector_entry SynchronousExceptionA64
	mov	x0, #SYNC_EXCEPTION_AARCH64
	bl	plat_report_exception
	no_ret	plat_panic_handler
85
end_vector_entry SynchronousExceptionA64
Roberto Vargas's avatar
Roberto Vargas committed
86
87
88
89
90

vector_entry IrqA64
	mov	x0, #IRQ_AARCH64
	bl	plat_report_exception
	no_ret	plat_panic_handler
91
end_vector_entry IrqA64
Roberto Vargas's avatar
Roberto Vargas committed
92
93
94
95
96

vector_entry FiqA64
	mov	x0, #FIQ_AARCH64
	bl	plat_report_exception
	no_ret	plat_panic_handler
97
end_vector_entry FiqA64
Roberto Vargas's avatar
Roberto Vargas committed
98
99
100
101
102

vector_entry SErrorA64
	mov	x0, #SERROR_AARCH64
	bl	plat_report_exception
	no_ret	plat_panic_handler
103
end_vector_entry SErrorA64
Roberto Vargas's avatar
Roberto Vargas committed
104
105
106
107
108
109
110
111
112

	/* -----------------------------------------------------
	 * Lower EL using AArch32 : 0x600 - 0x800
	 * -----------------------------------------------------
	 */
vector_entry SynchronousExceptionA32
	mov	x0, #SYNC_EXCEPTION_AARCH32
	bl	plat_report_exception
	no_ret	plat_panic_handler
113
end_vector_entry SynchronousExceptionA32
Roberto Vargas's avatar
Roberto Vargas committed
114
115
116
117
118

vector_entry IrqA32
	mov	x0, #IRQ_AARCH32
	bl	plat_report_exception
	no_ret	plat_panic_handler
119
end_vector_entry IrqA32
Roberto Vargas's avatar
Roberto Vargas committed
120
121
122
123
124

vector_entry FiqA32
	mov	x0, #FIQ_AARCH32
	bl	plat_report_exception
	no_ret	plat_panic_handler
125
end_vector_entry FiqA32
Roberto Vargas's avatar
Roberto Vargas committed
126
127
128
129
130

vector_entry SErrorA32
	mov	x0, #SERROR_AARCH32
	bl	plat_report_exception
	no_ret	plat_panic_handler
131
end_vector_entry SErrorA32