arm: use common instructions applicable to armv7m & other arm archs
authorVikas Manocha <vikas.manocha@st.com>
Fri, 5 Feb 2016 18:43:01 +0000 (10:43 -0800)
committerTom Rini <trini@konsulko.com>
Fri, 17 Mar 2017 18:15:11 +0000 (14:15 -0400)
This patch cleans the code by using instructions allowed for armv7m as well as
other Arm archs.

Signed-off-by: Vikas Manocha <vikas.manocha@st.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
arch/arm/lib/crt0.S

index 8415f77..2c4867a 100644 (file)
@@ -71,18 +71,12 @@ ENTRY(_main)
  */
 
 #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK)
-       ldr     sp, =(CONFIG_SPL_STACK)
+       ldr     r0, =(CONFIG_SPL_STACK)
 #else
-       ldr     sp, =(CONFIG_SYS_INIT_SP_ADDR)
+       ldr     r0, =(CONFIG_SYS_INIT_SP_ADDR)
 #endif
-#if defined(CONFIG_CPU_V7M)    /* v7M forbids using SP as BIC destination */
-       mov     r3, sp
-       bic     r3, r3, #7
-       mov     sp, r3
-#else
-       bic     sp, sp, #7      /* 8-byte alignment for ABI compliance */
-#endif
-       mov     r0, sp
+       bic     r0, r0, #7      /* 8-byte alignment for ABI compliance */
+       mov     sp, r0
        bl      board_init_f_alloc_reserve
        mov     sp, r0
        /* set up gd here, outside any C code */
@@ -100,14 +94,9 @@ ENTRY(_main)
  * 'here' but relocated.
  */
 
-       ldr     sp, [r9, #GD_START_ADDR_SP]     /* sp = gd->start_addr_sp */
-#if defined(CONFIG_CPU_V7M)    /* v7M forbids using SP as BIC destination */
-       mov     r3, sp
-       bic     r3, r3, #7
-       mov     sp, r3
-#else
-       bic     sp, sp, #7      /* 8-byte alignment for ABI compliance */
-#endif
+       ldr     r0, [r9, #GD_START_ADDR_SP]     /* sp = gd->start_addr_sp */
+       bic     r0, r0, #7      /* 8-byte alignment for ABI compliance */
+       mov     sp, r0
        ldr     r9, [r9, #GD_BD]                /* r9 = gd->bd */
        sub     r9, r9, #GD_SIZE                /* new GD is below bd */