diff mbox

[U-Boot,v3] arm: use common instructions applicable to armv7m & other arm archs

Message ID 1454697782-22009-1-git-send-email-vikas.manocha@st.com
State Accepted
Commit c62c1b3c24408bdc48fba92d1ed6011e3a053beb
Delegated to: Tom Rini
Headers show

Commit Message

Vikas MANOCHA Feb. 5, 2016, 6:43 p.m. UTC
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(-)

Comments

Vikas MANOCHA March 10, 2016, 5:44 p.m. UTC | #1
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
Tom Rini March 18, 2017, 12:15 a.m. UTC | #2
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 mbox

Patch

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 */