Merge "Move exception vector table away from 0x0"
diff --git a/arch/arm/cpu/cpu.c b/arch/arm/cpu/cpu.c
index cf30789..5870003 100644
--- a/arch/arm/cpu/cpu.c
+++ b/arch/arm/cpu/cpu.c
@@ -73,6 +73,9 @@
*/
void arch_shutdown(void)
{
+ /* Reset the VBAR register, in case it interferes with Linux. */
+ arm_write_vbar(0);
+
#ifdef CONFIG_MMU
/* nearly the same as below, but this could also disable
* second level cache.
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index 9fc20bf..7cad71b 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -158,8 +158,8 @@
/* Get start of binary image */
addr -= (uint32_t)&board_init_lowlevel_return - TEXT_BASE;
- /* Copy vector table to 0x0 location */
- memcpy( (void *)0, (void *)TEXT_BASE, 0x50);
+ /* Setup exception vector table. */
+ arm_write_vbar((unsigned int) &exception_vectors);
/* relocate to link address if necessary */
if (addr != TEXT_BASE)
diff --git a/arch/arm/lib/armlinux.c b/arch/arm/lib/armlinux.c
index acb2106..ce1cc6b 100644
--- a/arch/arm/lib/armlinux.c
+++ b/arch/arm/lib/armlinux.c
@@ -221,7 +221,7 @@
setup_tags(data, swap);
- //shutdown_barebox();
+ shutdown_barebox();
if (swap) {
u32 reg;
__asm__ __volatile__("mrc p15, 0, %0, c1, c0" : "=r" (reg));