[U-Boot] [PATCH 28/48] x86: Allow use of global_data with EFI
Bin Meng
bmeng.cn at gmail.com
Thu Jul 23 11:58:07 CEST 2015
Hi Simon,
On Wed, Jul 22, 2015 at 11:49 PM, Simon Glass <sjg at chromium.org> wrote:
> On x86 the global_data pointer is provided through a somewhat-bizarre and
> x86-specific mechanism: the frame segment is set to a pointer to the start
frame segment? I don't think F stands for frame.
> of global_data, so that accesses can use this build-in register.
>
> When running as an EFI payload we don't want to mess with the Global
> Descriptor Table (GDT) and there is little advantage (in terms of code size)
> to doing so.
>
> Allow global_data to be a simple variable in this case.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> arch/x86/include/asm/global_data.h | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/x86/include/asm/global_data.h b/arch/x86/include/asm/global_data.h
> index abd70b9..6df6a78 100644
> --- a/arch/x86/include/asm/global_data.h
> +++ b/arch/x86/include/asm/global_data.h
> @@ -76,6 +76,12 @@ struct arch_global_data {
> #include <asm-generic/global_data.h>
>
> #ifndef __ASSEMBLY__
> +# ifdef CONFIG_ARCH_EFI
> +
> +#define gd global_data_ptr
OK, I got you here :) See comments in patch#18 @
http://patchwork.ozlabs.org/patch/498657/
I think this patch should come before patch#18. Please adjust the order.
> +
> +#define DECLARE_GLOBAL_DATA_PTR extern struct global_data *global_data_ptr
> +# else
> static inline __attribute__((no_instrument_function)) gd_t *get_fs_gd_ptr(void)
> {
> gd_t *gd_ptr;
> @@ -88,6 +94,7 @@ static inline __attribute__((no_instrument_function)) gd_t *get_fs_gd_ptr(void)
> #define gd get_fs_gd_ptr()
>
> #define DECLARE_GLOBAL_DATA_PTR
> +# endif
>
> #endif
>
Regards,
Bin
More information about the U-Boot
mailing list