On 12.11.19 13:00, matthias....@kernel.org wrote:
From: Matthias Brugger <mbrug...@suse.com>

The fw_dtb_pointer was defined in the assembly code, which makes him
live in section .text_rest
Put that's not necessary, we can push the variable in the .data section.

This will prevent relocation errors like:
board/raspberrypi/rpi/rpi.c:317:(.text.board_get_usable_ram_top+0x8):
relocation truncated to fit: R_AARCH64_LDST64_ABS_LO12_NC against symbol
`fw_dtb_pointer' defined in .text section in board/raspberrypi/rpi/built-in.o

Signed-off-by: Matthias Brugger <mbrug...@suse.com>

---

Changes in v3:
- fix armv7 build

Changes in v2:
- push fw_dtb_pointer into the .data section

  board/raspberrypi/rpi/lowlevel_init.S | 12 ++----------
  board/raspberrypi/rpi/rpi.c           |  4 ++--
  2 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/board/raspberrypi/rpi/lowlevel_init.S 
b/board/raspberrypi/rpi/lowlevel_init.S
index 435eed521f..8c39b3e12e 100644
--- a/board/raspberrypi/rpi/lowlevel_init.S
+++ b/board/raspberrypi/rpi/lowlevel_init.S
@@ -6,15 +6,6 @@
#include <config.h> -.align 8
-.global fw_dtb_pointer
-fw_dtb_pointer:
-#ifdef CONFIG_ARM64
-       .dword 0x0
-#else
-       .word 0x0
-#endif
-
  /*
   * Routine: save_boot_params (called after reset from start.S)
   * Description: save ATAG/FDT address provided by the firmware at boot time
@@ -28,7 +19,8 @@ save_boot_params:
        adr     x8, fw_dtb_pointer
        str     x0, [x8]
  #else
-       str     r2, fw_dtb_pointer
+       ldr     r8, =fw_dtb_pointer
+       str     r2, [r8]
  #endif
/* Returns */
diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
index 9e0abdda31..0e05d59e1f 100644
--- a/board/raspberrypi/rpi/rpi.c
+++ b/board/raspberrypi/rpi/rpi.c
@@ -27,8 +27,8 @@
DECLARE_GLOBAL_DATA_PTR; -/* From lowlevel_init.S */
-extern unsigned long fw_dtb_pointer;
+/* Assigned in lowlevel_init.S */
+unsigned long fw_dtb_pointer = 0x1;


I assume you assign the 0x1 here so that it doesn't land in .bss which may get cleared after you wrote it? If so, please document that in the comment. Also even better yet, document it in a comment and just manually assign the variable to the ".data" section using

  __attribute__((section(".data")))



Alex


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to