Message ID | 1398985240-23670-1-git-send-email-yorksun@freescale.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
On 1 May 2014 16:00, York Sun <yorksun@freescale.com> wrote: > Some platforms (tested on mpc85xx, mpc86xx) use global data before calling > function baord_inti_f(). The data should not be cleared later. Any arch > which uses global data in generic board board_init_f() should define > CONFIG_SYS_GENERIC_GLOBAL_DATA. > > Signed-off-by: York Sun <yorksun@freescale.com> > CC: Scott Wood <scottwood@freescale.com> > CC: Simon Glass <sjg@chromium.org> > CC: Albert ARIBAUD <albert.u.boot@aribaud.net> > --- > Change log > > v4: Replace with CONFIG_SYS_GENERIC_GLOBAL_DATA, a positive logic > v3: Introduce CONFIG_SYS_EARLY_GD instead of using a list > v2: Instead of adding back gd init for all PPC, preserve gd for mpc85xx and mpc86xx. > > README | 6 ++++++ > arch/arc/include/asm/config.h | 2 ++ > arch/arm/include/asm/config.h | 2 ++ > arch/mips/include/asm/config.h | 2 ++ I think you will need sandbox also. Otherwise looks good. Reviewed-by: Simon Glass <sjg@chromium.org>
On 05/01/2014 07:45 PM, Simon Glass wrote: > On 1 May 2014 16:00, York Sun <yorksun@freescale.com> wrote: >> Some platforms (tested on mpc85xx, mpc86xx) use global data before calling >> function baord_inti_f(). The data should not be cleared later. Any arch >> which uses global data in generic board board_init_f() should define >> CONFIG_SYS_GENERIC_GLOBAL_DATA. >> >> Signed-off-by: York Sun <yorksun@freescale.com> >> CC: Scott Wood <scottwood@freescale.com> >> CC: Simon Glass <sjg@chromium.org> >> CC: Albert ARIBAUD <albert.u.boot@aribaud.net> >> --- >> Change log >> >> v4: Replace with CONFIG_SYS_GENERIC_GLOBAL_DATA, a positive logic >> v3: Introduce CONFIG_SYS_EARLY_GD instead of using a list >> v2: Instead of adding back gd init for all PPC, preserve gd for mpc85xx and mpc86xx. >> >> README | 6 ++++++ >> arch/arc/include/asm/config.h | 2 ++ >> arch/arm/include/asm/config.h | 2 ++ >> arch/mips/include/asm/config.h | 2 ++ > > I think you will need sandbox also. Otherwise looks good. > > Reviewed-by: Simon Glass <sjg@chromium.org> > Simon, Sandbox doesn't have CONFIG_SYS_GENERIC_BOARD defined yet. Did you convert it recently? York
On Fri, 2014-05-02 at 17:14 -0700, York Sun wrote: > On 05/01/2014 07:45 PM, Simon Glass wrote: > > On 1 May 2014 16:00, York Sun <yorksun@freescale.com> wrote: > >> Some platforms (tested on mpc85xx, mpc86xx) use global data before calling > >> function baord_inti_f(). The data should not be cleared later. Any arch > >> which uses global data in generic board board_init_f() should define > >> CONFIG_SYS_GENERIC_GLOBAL_DATA. > >> > >> Signed-off-by: York Sun <yorksun@freescale.com> > >> CC: Scott Wood <scottwood@freescale.com> > >> CC: Simon Glass <sjg@chromium.org> > >> CC: Albert ARIBAUD <albert.u.boot@aribaud.net> > >> --- > >> Change log > >> > >> v4: Replace with CONFIG_SYS_GENERIC_GLOBAL_DATA, a positive logic > >> v3: Introduce CONFIG_SYS_EARLY_GD instead of using a list > >> v2: Instead of adding back gd init for all PPC, preserve gd for mpc85xx and mpc86xx. > >> > >> README | 6 ++++++ > >> arch/arc/include/asm/config.h | 2 ++ > >> arch/arm/include/asm/config.h | 2 ++ > >> arch/mips/include/asm/config.h | 2 ++ > > > > I think you will need sandbox also. Otherwise looks good. > > > > Reviewed-by: Simon Glass <sjg@chromium.org> > > > > Simon, > > Sandbox doesn't have CONFIG_SYS_GENERIC_BOARD defined yet. Did you convert it > recently? Look in arch/sandbox/config.mk. Likewise with arch/x86/include/asm/config.h. -Scott
diff --git a/README b/README index 12758dc..c66f988 100644 --- a/README +++ b/README @@ -440,6 +440,12 @@ The following options need to be configured: supported, core will start to execute uboot when wakes up. - Generic CPU options: + CONFIG_SYS_GENERIC_GLOBAL_DATA + Defines global data is initialized in generic board board_init_f(). + If this macro is defined, global data is created and cleared in + generic board board_init_f(). Without this macro, architecture/board + should initialize global data before calling board_init_f(). + CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN Defines the endianess of the CPU. Implementation of those diff --git a/arch/arc/include/asm/config.h b/arch/arc/include/asm/config.h index 5761def..3d331cc 100644 --- a/arch/arc/include/asm/config.h +++ b/arch/arc/include/asm/config.h @@ -7,6 +7,8 @@ #ifndef __ASM_ARC_CONFIG_H_ #define __ASM_ARC_CONFIG_H_ +#define CONFIG_SYS_GENERIC_GLOBAL_DATA + #define CONFIG_LMB #endif /*__ASM_ARC_CONFIG_H_ */ diff --git a/arch/arm/include/asm/config.h b/arch/arm/include/asm/config.h index abf79e5..2a20a77 100644 --- a/arch/arm/include/asm/config.h +++ b/arch/arm/include/asm/config.h @@ -7,6 +7,8 @@ #ifndef _ASM_CONFIG_H_ #define _ASM_CONFIG_H_ +#define CONFIG_SYS_GENERIC_GLOBAL_DATA + #define CONFIG_LMB #define CONFIG_SYS_BOOT_RAMDISK_HIGH diff --git a/arch/mips/include/asm/config.h b/arch/mips/include/asm/config.h index 3a891ba..1c8a42b 100644 --- a/arch/mips/include/asm/config.h +++ b/arch/mips/include/asm/config.h @@ -7,6 +7,8 @@ #ifndef _ASM_CONFIG_H_ #define _ASM_CONFIG_H_ +#define CONFIG_SYS_GENERIC_GLOBAL_DATA + #define CONFIG_LMB #define CONFIG_SYS_BOOT_RAMDISK_HIGH diff --git a/common/board_f.c b/common/board_f.c index cbdf06f..7601a98 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -970,20 +970,22 @@ static init_fnc_t init_sequence_f[] = { void board_init_f(ulong boot_flags) { -#ifndef CONFIG_X86 +#ifdef CONFIG_SYS_GENERIC_GLOBAL_DATA + /* + * For some archtectures, global data is initialized and used before + * calling this function. The data should be preserved. For others, + * CONFIG_SYS_GENERIC_GLOBAL_DATA should be defined and use the stack + * here to host global data until relocation. + */ gd_t data; gd = &data; -#endif /* * Clear global data before it is accessed at debug print * in initcall_run_list. Otherwise the debug print probably * get the wrong vaule of gd->have_console. */ -#if !defined(CONFIG_CPM2) && !defined(CONFIG_MPC512X) && \ - !defined(CONFIG_MPC83xx) && !defined(CONFIG_MPC85xx) && \ - !defined(CONFIG_MPC86xx) && !defined(CONFIG_X86) zero_global_data(); #endif
Some platforms (tested on mpc85xx, mpc86xx) use global data before calling function baord_inti_f(). The data should not be cleared later. Any arch which uses global data in generic board board_init_f() should define CONFIG_SYS_GENERIC_GLOBAL_DATA. Signed-off-by: York Sun <yorksun@freescale.com> CC: Scott Wood <scottwood@freescale.com> CC: Simon Glass <sjg@chromium.org> CC: Albert ARIBAUD <albert.u.boot@aribaud.net> --- Change log v4: Replace with CONFIG_SYS_GENERIC_GLOBAL_DATA, a positive logic v3: Introduce CONFIG_SYS_EARLY_GD instead of using a list v2: Instead of adding back gd init for all PPC, preserve gd for mpc85xx and mpc86xx. README | 6 ++++++ arch/arc/include/asm/config.h | 2 ++ arch/arm/include/asm/config.h | 2 ++ arch/mips/include/asm/config.h | 2 ++ common/board_f.c | 12 +++++++----- 5 files changed, 19 insertions(+), 5 deletions(-)