Hi Simon, On Fri, Jul 31, 2015 at 11:31 PM, Simon Glass <s...@chromium.org> wrote: > On x86 the global_data pointer is provided through a somewhat-bizarre and > x86-specific mechanism: the F segment register is set to a pointer to the > start 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
Nits: running as an EFI application > 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 <s...@chromium.org> > --- Reviewed-by: Bin Meng <bmeng...@gmail.com> > > Changes in v2: > - Move this patch to before the EFI start-up code patch > - Refer to FS as F segment register instead of frame segment register > - Rename CONFIG_ARCH_EFI to CONFIG_EFI_APP > > 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 3db9a4c..80ebe3e 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_EFI_APP > + > +#define gd global_data_ptr > + > +#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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot