diff options
author | Aaron Durbin <adurbin@chromium.org> | 2014-08-27 16:45:12 -0500 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2015-03-27 08:04:10 +0100 |
commit | cc175767c98b60a7a9be4651a5187d79b40164c1 (patch) | |
tree | 116f082d56be7d76b201d03dbd2199eb300bb2e0 | |
parent | 339f8b313a2ba0ff8c4ab7d5634677290b8d3d4c (diff) |
arm64: add exception_hwinit()
exception_hwinit() provides a path for just setting the hardware
state. This allows for other CPUs but the boot CPU for setting up
the appropriate vector table.
BUG=chrome-os-partner:31545
BRANCH=None
TEST=Built and booted to the kernel.
Change-Id: Ifd44ab697bce5cd351f05069519785dc80e2b866
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 76a1c9cb3df930b28469608ecb5c35be7ccdadd1
Original-Change-Id: Ib09c813b49a4f00daca0b53d9dca972251fcf476
Original-Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/214773
Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: http://review.coreboot.org/9017
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r-- | src/arch/arm64/armv8/exception.c | 9 | ||||
-rw-r--r-- | src/arch/arm64/include/armv8/arch/exception.h | 2 |
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); |