diff mbox series

[U-Boot,1/1] ARMv8: get new GD address from gd->new_gd directly

Message ID 59C4B011.80401@zoho.com
State Accepted
Commit 01a835998935b78c31e80227358ac11212d60878
Delegated to: Tom Rini
Headers show
Series [U-Boot,1/1] ARMv8: get new GD address from gd->new_gd directly | expand

Commit Message

zijun_hu Sept. 22, 2017, 6:39 a.m. UTC
From: zijun_hu <zijun_hu@htc.com>

the new GD address is calculated via board data BD currently
it require the new GD area locates below BD tightly, so a strict
constraint is imposed on memory layout which maybe make special
platform unpleasant.

fix it by getting new GD address from gd->new_gd directly.

Signed-off-by: zijun_hu <zijun_hu@htc.com>
---
 arch/arm/lib/crt0_64.S | 3 +--
 lib/asm-offsets.c      | 2 ++
 2 files changed, 3 insertions(+), 2 deletions(-)

Comments

Simon Glass Sept. 25, 2017, 2:14 a.m. UTC | #1
On 22 September 2017 at 00:39, zijun_hu <zijun_hu@zoho.com> wrote:
> From: zijun_hu <zijun_hu@htc.com>
>
> the new GD address is calculated via board data BD currently
> it require the new GD area locates below BD tightly, so a strict
> constraint is imposed on memory layout which maybe make special
> platform unpleasant.
>
> fix it by getting new GD address from gd->new_gd directly.
>
> Signed-off-by: zijun_hu <zijun_hu@htc.com>
> ---
>  arch/arm/lib/crt0_64.S | 3 +--
>  lib/asm-offsets.c      | 2 ++
>  2 files changed, 3 insertions(+), 2 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini Oct. 9, 2017, 5 p.m. UTC | #2
On Fri, Sep 22, 2017 at 02:39:13PM +0800, zijun_hu wrote:

> From: zijun_hu <zijun_hu@htc.com>
> 
> the new GD address is calculated via board data BD currently
> it require the new GD area locates below BD tightly, so a strict
> constraint is imposed on memory layout which maybe make special
> platform unpleasant.
> 
> fix it by getting new GD address from gd->new_gd directly.
> 
> Signed-off-by: zijun_hu <zijun_hu@htc.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S
index 62fad45..9c46c93 100644
--- a/arch/arm/lib/crt0_64.S
+++ b/arch/arm/lib/crt0_64.S
@@ -95,8 +95,7 @@  ENTRY(_main)
  */
 	ldr	x0, [x18, #GD_START_ADDR_SP]	/* x0 <- gd->start_addr_sp */
 	bic	sp, x0, #0xf	/* 16-byte alignment for ABI compliance */
-	ldr	x18, [x18, #GD_BD]		/* x18 <- gd->bd */
-	sub	x18, x18, #GD_SIZE		/* new GD is below bd */
+	ldr	x18, [x18, #GD_NEW_GD]		/* x18 <- gd->new_gd */
 
 	adr	lr, relocation_return
 	ldr	x9, [x18, #GD_RELOC_OFF]	/* x9 <- gd->reloc_off */
diff --git a/lib/asm-offsets.c b/lib/asm-offsets.c
index b04f7c6..f4f1bb8 100644
--- a/lib/asm-offsets.c
+++ b/lib/asm-offsets.c
@@ -38,5 +38,7 @@  int main(void)
 
 	DEFINE(GD_START_ADDR_SP, offsetof(struct global_data, start_addr_sp));
 
+	DEFINE(GD_NEW_GD, offsetof(struct global_data, new_gd));
+
 	return 0;
 }