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>
This commit is contained in:
Aaron Durbin 2014-08-27 16:45:12 -05:00 committed by Patrick Georgi
parent 339f8b313a
commit cc175767c9
2 changed files with 9 additions and 2 deletions

View File

@ -127,11 +127,16 @@ static uint64_t test_exception(void)
return 0; return 0;
} }
void exception_init(void) void exception_hwinit(void)
{ {
extern void *exception_table; extern void *exception_table;
set_vbar(&exception_table); set_vbar(&exception_table);
}
void exception_init(void)
{
/* Load the exception table. */
exception_hwinit();
printk(BIOS_DEBUG, "ARM64: Exception handlers installed.\n"); printk(BIOS_DEBUG, "ARM64: Exception handlers installed.\n");

View File

@ -39,6 +39,8 @@ struct exception_state
uint64_t regs[31]; uint64_t regs[31];
} __attribute__((packed)); } __attribute__((packed));
/* Initialize the exception handling on the current CPU. */
void exception_hwinit(void);
void exception_init(void); void exception_init(void);
void set_vbar(void *vbar); void set_vbar(void *vbar);
void exception_dispatch(struct exception_state *state, int idx); void exception_dispatch(struct exception_state *state, int idx);