[PATCH v4 06/34] x86: Don't duplicate global_ptr in 64-bit EFI app

Simon Glass sjg at chromium.org
Thu Nov 4 04:09:08 CET 2021


This variable is already defined by the EFI code. Drop the duplicate
definition when building a 64-bit EFI app.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

(no changes since v1)

 arch/x86/cpu/x86_64/cpu.c  | 15 +--------------
 arch/x86/cpu/x86_64/misc.c | 16 ++++++++++++++++
 lib/efi/efi.c              |  9 +++++++++
 3 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/arch/x86/cpu/x86_64/cpu.c b/arch/x86/cpu/x86_64/cpu.c
index 8f72c9951a1..a3674e8e29a 100644
--- a/arch/x86/cpu/x86_64/cpu.c
+++ b/arch/x86/cpu/x86_64/cpu.c
@@ -8,20 +8,7 @@
 #include <cpu_func.h>
 #include <debug_uart.h>
 #include <init.h>
-
-/*
- * Global declaration of gd.
- *
- * As we write to it before relocation we have to make sure it is not put into
- * a .bss section which may overlap a .rela section. Initialization forces it
- * into a .data section which cannot overlap any .rela section.
- */
-struct global_data *global_data_ptr = (struct global_data *)~0;
-
-void arch_setup_gd(gd_t *new_gd)
-{
-	global_data_ptr = new_gd;
-}
+#include <asm/global_data.h>
 
 int cpu_has_64bit(void)
 {
diff --git a/arch/x86/cpu/x86_64/misc.c b/arch/x86/cpu/x86_64/misc.c
index 02587ff0c50..691b67ff68a 100644
--- a/arch/x86/cpu/x86_64/misc.c
+++ b/arch/x86/cpu/x86_64/misc.c
@@ -7,6 +7,22 @@
 #include <common.h>
 #include <init.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Global declaration of gd.
+ *
+ * As we write to it before relocation we have to make sure it is not put into
+ * a .bss section which may overlap a .rela section. Initialization forces it
+ * into a .data section which cannot overlap any .rela section.
+ */
+struct global_data *global_data_ptr = (struct global_data *)~0;
+
+void arch_setup_gd(gd_t *new_gd)
+{
+	global_data_ptr = new_gd;
+}
+
 int misc_init_r(void)
 {
 	return 0;
diff --git a/lib/efi/efi.c b/lib/efi/efi.c
index 0c16a5fdd38..69e52e45748 100644
--- a/lib/efi/efi.c
+++ b/lib/efi/efi.c
@@ -17,6 +17,15 @@
 #include <efi.h>
 #include <efi_api.h>
 
+/*
+ * Global declaration of gd.
+ *
+ * As we write to it before relocation we have to make sure it is not put into
+ * a .bss section which may overlap a .rela section. Initialization forces it
+ * into a .data section which cannot overlap any .rela section.
+ */
+struct global_data *global_data_ptr = (struct global_data *)~0;
+
 /*
  * Unfortunately we cannot access any code outside what is built especially
  * for the stub. lib/string.c is already being built for the U-Boot payload
-- 
2.34.0.rc0.344.g81b53c2807-goog



More information about the U-Boot mailing list