Simplify noreturn exception vectors for current EL
All handlers for current EL exceptions panic and never return. Create
noreturn_* variants of exception vector macros without a return path.
Also rename the C handlers to make it clearer in the assembly that these
are not expected to return.
This is done in preparation for inserting speculation barriers after
ERETs, removing the _sp0 handlers which use all the 32 instructions
available in a vector table entry.
Change-Id: If6616686d9a28820ed223e4d3d0e9cdfc3271e52
diff --git a/src/arch/aarch64/hypervisor/handler.c b/src/arch/aarch64/hypervisor/handler.c
index 53ae4d0..bc2b998 100644
--- a/src/arch/aarch64/hypervisor/handler.c
+++ b/src/arch/aarch64/hypervisor/handler.c
@@ -180,7 +180,7 @@
}
}
-noreturn void irq_current_exception(uintreg_t elr, uintreg_t spsr)
+noreturn void irq_current_exception_noreturn(uintreg_t elr, uintreg_t spsr)
{
(void)elr;
(void)spsr;
@@ -188,7 +188,7 @@
panic("IRQ from current");
}
-noreturn void fiq_current_exception(uintreg_t elr, uintreg_t spsr)
+noreturn void fiq_current_exception_noreturn(uintreg_t elr, uintreg_t spsr)
{
(void)elr;
(void)spsr;
@@ -196,7 +196,7 @@
panic("FIQ from current");
}
-noreturn void serr_current_exception(uintreg_t elr, uintreg_t spsr)
+noreturn void serr_current_exception_noreturn(uintreg_t elr, uintreg_t spsr)
{
(void)elr;
(void)spsr;
@@ -204,7 +204,7 @@
panic("SERR from current");
}
-noreturn void sync_current_exception(uintreg_t elr, uintreg_t spsr)
+noreturn void sync_current_exception_noreturn(uintreg_t elr, uintreg_t spsr)
{
uintreg_t esr = read_msr(esr_el2);
uintreg_t ec = GET_ESR_EC(esr);