On 10/14/21 3:55 AM, Peng Fan (OSS) wrote:
[...]
diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S
index 680e674fa3..28c8356aee 100644
--- a/arch/arm/lib/crt0_64.S
+++ b/arch/arm/lib/crt0_64.S
@@ -104,6 +104,10 @@ ENTRY(_main)
      bic    sp, x0, #0xf    /* 16-byte alignment for ABI compliance */
      ldr    x18, [x18, #GD_NEW_GD]        /* x18 <- gd->new_gd */
+    /* Skip relocation in case gd->gd_flags & GD_FLG_SKIP_RELOC */
+    ldr    x0, [x18, #GD_FLAGS]        /* x0 <- gd->flags */

You are using new_gd, that means bit 11 needs to be set after
new_gd has been filled with gd.

I would prefer use gd, not new_gd.

Both gd and newgd have GD_FLG_SKIP_RELOC set very early on, in u-boot that's currently done by one board in mach_cpu_init, so that should be no problem. Moreover, both gd and newgd flags must be identical as far as I can tell.

Reply via email to