summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/arm64/armv8/exception.c9
-rw-r--r--src/arch/arm64/include/armv8/arch/exception.h2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/arch/arm64/armv8/exception.c b/src/arch/arm64/armv8/exception.c
index 4b4d7b7185..d9a63c3a81 100644
--- a/src/arch/arm64/armv8/exception.c
+++ b/src/arch/arm64/armv8/exception.c
@@ -127,11 +127,16 @@ static uint64_t test_exception(void)
return 0;
}
-void exception_init(void)
+void exception_hwinit(void)
{
extern void *exception_table;
-
set_vbar(&exception_table);
+}
+
+void exception_init(void)
+{
+ /* Load the exception table. */
+ exception_hwinit();
printk(BIOS_DEBUG, "ARM64: Exception handlers installed.\n");
diff --git a/src/arch/arm64/include/armv8/arch/exception.h b/src/arch/arm64/include/armv8/arch/exception.h
index b33e20fa1b..abb80931e6 100644
--- a/src/arch/arm64/include/armv8/arch/exception.h
+++ b/src/arch/arm64/include/armv8/arch/exception.h
@@ -39,6 +39,8 @@ struct exception_state
uint64_t regs[31];
} __attribute__((packed));
+/* Initialize the exception handling on the current CPU. */
+void exception_hwinit(void);
void exception_init(void);
void set_vbar(void *vbar);
void exception_dispatch(struct exception_state *state, int idx);