]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - arch/arm/lib/relocate.S
ARM: Add ARMv7-M support
[karo-tx-uboot.git] / arch / arm / lib / relocate.S
index 92f531452d5435c1adbfce9d4bc80a0e572cdb3f..475d503dd9df63fda046d225c47205a1bc9c80af 100644 (file)
@@ -9,6 +9,9 @@
 #include <asm-offsets.h>
 #include <config.h>
 #include <linux/linkage.h>
+#ifdef CONFIG_CPU_V7M
+#include <asm/armv7m.h>
+#endif
 
 /*
  * Default/weak exception vectors relocation routine
 
 ENTRY(relocate_vectors)
 
+#ifdef CONFIG_CPU_V7M
+       /*
+        * On ARMv7-M we only have to write the new vector address
+        * to VTOR register.
+        */
+       ldr     r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
+       ldr     r1, =V7M_SCB_BASE
+       str     r0, [r1, V7M_SCB_VTOR]
+#else
 #ifdef CONFIG_HAS_VBAR
        /*
         * If the ARM processor has the security extensions,
@@ -46,6 +58,7 @@ ENTRY(relocate_vectors)
        stmia   r1!, {r2-r8,r10}
        ldmia   r0!, {r2-r8,r10}
        stmia   r1!, {r2-r8,r10}
+#endif
 #endif
        bx      lr