diff options
author | Ovidiu Panait <ovpanait@gmail.com> | 2022-09-13 21:31:26 +0300 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-10-06 21:05:17 -0400 |
commit | 181cbd4017305142eb26df0aa065b8bb95921f83 (patch) | |
tree | 33a6ca7b87da1f7ac5c39e4166bc1e7d4611445b | |
parent | a70c75cabae12a81d512b240d60413df294246eb (diff) | |
download | u-boot-181cbd4017305142eb26df0aa065b8bb95921f83.zip u-boot-181cbd4017305142eb26df0aa065b8bb95921f83.tar.gz u-boot-181cbd4017305142eb26df0aa065b8bb95921f83.tar.bz2 |
common/board_f: remove XTRN_DECLARE_GLOBAL_DATA_PTR dead code
The XTRN_DECLARE_GLOBAL_DATA_PTR declarations in ppc code are permanently
commented out, so there are no users for this macro:
#if 1
#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r2")
#else /* We could use plain global data, but the resulting code is bigger */
#define XTRN_DECLARE_GLOBAL_DATA_PTR extern
#define DECLARE_GLOBAL_DATA_PTR XTRN_DECLARE_GLOBAL_DATA_PTR \
gd_t *gd
#endif
Remove all references to this macro, but add a documentation note regarding
the possibility of using plain global data for the GD pointer.
Signed-off-by: Ovidiu Panait <ovpanait@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
-rw-r--r-- | arch/powerpc/include/asm/global_data.h | 6 | ||||
-rw-r--r-- | common/board_f.c | 11 | ||||
-rw-r--r-- | doc/develop/global_data.rst | 5 |
3 files changed, 5 insertions, 17 deletions
diff --git a/arch/powerpc/include/asm/global_data.h b/arch/powerpc/include/asm/global_data.h index 6709e69..6ed21c7 100644 --- a/arch/powerpc/include/asm/global_data.h +++ b/arch/powerpc/include/asm/global_data.h @@ -92,12 +92,6 @@ struct arch_global_data { #include <asm-generic/global_data.h> -#if 1 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r2") -#else /* We could use plain global data, but the resulting code is bigger */ -#define XTRN_DECLARE_GLOBAL_DATA_PTR extern -#define DECLARE_GLOBAL_DATA_PTR XTRN_DECLARE_GLOBAL_DATA_PTR \ - gd_t *gd -#endif #endif /* __ASM_GBL_DATA_H */ diff --git a/common/board_f.c b/common/board_f.c index 3df4efe..77b7d9e 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -59,18 +59,7 @@ #include <linux/errno.h> #include <linux/log2.h> -/* - * Pointer to initial global data area - * - * Here we initialize it if needed. - */ -#ifdef XTRN_DECLARE_GLOBAL_DATA_PTR -#undef XTRN_DECLARE_GLOBAL_DATA_PTR -#define XTRN_DECLARE_GLOBAL_DATA_PTR /* empty = allocate here */ -DECLARE_GLOBAL_DATA_PTR = (gd_t *)(CONFIG_SYS_INIT_GD_ADDR); -#else DECLARE_GLOBAL_DATA_PTR; -#endif /* * TODO(sjg@chromium.org): IMO this code should be diff --git a/doc/develop/global_data.rst b/doc/develop/global_data.rst index 2ac893d..d143f27 100644 --- a/doc/develop/global_data.rst +++ b/doc/develop/global_data.rst @@ -36,6 +36,11 @@ On most architectures the global data pointer is stored in a register. The sandbox, x86_64, and Xtensa are notable exceptions. +Current implementation uses a register for the GD pointer because this results +in smaller code. However, using plain global data for the GD pointer would be +possible too (and simpler, as it does not require the reservation of a specific +register for it), but the resulting code is bigger. + Clang for ARM does not support assigning a global register. When using Clang gd is defined as an inline function using assembly code. This adds a few bytes to the code size. |