Index: kernel/arch/arm32/src/exception.c
===================================================================
--- kernel/arch/arm32/src/exception.c	(revision ae36ba018b1d7b25373160d519fbd7904dcba09c)
+++ kernel/arch/arm32/src/exception.c	(revision 096d4a6ba1b305f820b0bc3f43e6e37620f26e5c)
@@ -120,18 +120,32 @@
 static void high_vectors(void)
 {
-	uint32_t control_reg;
-	
+	register uint32_t control_reg = 0;
+	
+#if defined(PROCESSOR_armv7)
+	asm volatile (
+		"mrc p15, 0, %[control_reg], c1, c0"
+		: [control_reg] "=r" (control_reg)
+	);
+#elif defined(PROCESSOR_armv4) | defined(PROCESSOR_armv5)
 	asm volatile (
 		"mrc p15, 0, %[control_reg], c1, c1"
 		: [control_reg] "=r" (control_reg)
 	);
+#endif
 	
 	/* switch on the high vectors bit */
 	control_reg |= CP15_R1_HIGH_VECTORS_BIT;
 	
-	asm volatile (
-		"mcr p15, 0, %[control_reg], c1, c1"
+#if defined(PROCESSOR_armv7)
+	asm volatile (
+		"mcr p15, 0, %[control_reg], c1, c0"
 		:: [control_reg] "r" (control_reg)
 	);
+#elif defined(PROCESSOR_armv4) | defined(PROCESSOR_armv5)
+	asm volatile (
+		"mcr p15, 0, %[control_reg], c1, c0"
+		:: [control_reg] "r" (control_reg)
+	);
+#endif
 }
 #endif
