ARM: Don't leave alignment checking on after the exception test.

Currently, the exception handling code on ARM turns on alignment checks as an
easy way to generate an exception for testing purposes. It was leaving it on
which disabled unaligned accesses for other, unlreated code running later.
This change adjusts the code so the original value of the alignment bit is
restored after the test exception.

Change-Id: Id8d035a05175f9fb13de547ab4aa5496d681d30c
Signed-off-by: Gabe Black <gabeblack@chromium.org>
Reviewed-on: http://review.coreboot.org/3690
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Gabe Black 2013-06-19 20:15:57 -07:00 committed by Stefan Reinauer
parent 63bb610abb
commit b919809afe
1 changed files with 5 additions and 3 deletions

View File

@ -143,9 +143,8 @@ void exception_init(void)
sctlr &= ~sctlr_te;
/* Set V=0 in SCTLR so VBAR points to the exception vector table. */
sctlr &= ~sctlr_v;
/* Enforce alignment. */
sctlr |= sctlr_a;
set_sctlr(sctlr);
/* Enforce alignment temporarily. */
set_sctlr(sctlr | sctlr_a);
extern uint32_t exception_table[];
set_vbar((uintptr_t)exception_table);
@ -155,4 +154,7 @@ void exception_init(void)
exception_test();
test_abort = 0;
printk(BIOS_ERR, "Testing exceptions: DONE\n");
/* Restore original alignment settings. */
set_sctlr(sctlr);
}