arm: use common instructions applicable to armv7m & other arm archs

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>
This commit is contained in:
Vikas Manocha 2016-02-05 10:43:01 -08:00 committed by Tom Rini
parent 431afb4ef9
commit c62c1b3c24
1 changed files with 7 additions and 18 deletions

View File

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