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