Message ID | 1454697782-22009-1-git-send-email-vikas.manocha@st.com |
---|---|
State | Accepted |
Commit | c62c1b3c24408bdc48fba92d1ed6011e3a053beb |
Delegated to: | Tom Rini |
Headers | show |
Just a reminder to apply this patch. Cheers, Vikas > -----Original Message----- > From: Vikas MANOCHA > Sent: Friday, February 05, 2016 10:43 AM > To: albert.u.boot@aribaud.net; hs@denx.de > Cc: Vikas MANOCHA; Simon Glass; Stefan Roese; Przemyslaw Marczak; > rev13@wp.pl; open list > Subject: [PATCH v3] 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> > --- > Changes in v3: moved the comment to right location. > Changes in v2: reword message commit. Removed info regarding BIC > instruction on SP, was creating confusion. > > arch/arm/lib/crt0.S | 25 +++++++------------------ > 1 file changed, 7 insertions(+), 18 deletions(-) > > diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S index 2f4c14e..d9078aa > 100644 > --- a/arch/arm/lib/crt0.S > +++ b/arch/arm/lib/crt0.S > @@ -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 */ > > -- > 1.9.1
On Fri, Feb 05, 2016 at 10:43:01AM -0800, Vikas Manocha wrote: > 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> Applied to u-boot/master, thanks!
diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S index 2f4c14e..d9078aa 100644 --- a/arch/arm/lib/crt0.S +++ b/arch/arm/lib/crt0.S @@ -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 */