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);