common/board_f: Initialized global data for generic board
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> Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7e18a1b958
commit
2a1680e30e
6
README
6
README
|
@ -451,6 +451,12 @@ The following options need to be configured:
|
||||||
supported, core will start to execute uboot when wakes up.
|
supported, core will start to execute uboot when wakes up.
|
||||||
|
|
||||||
- Generic CPU options:
|
- 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
|
CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
|
||||||
|
|
||||||
Defines the endianess of the CPU. Implementation of those
|
Defines the endianess of the CPU. Implementation of those
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#ifndef __ASM_ARC_CONFIG_H_
|
#ifndef __ASM_ARC_CONFIG_H_
|
||||||
#define __ASM_ARC_CONFIG_H_
|
#define __ASM_ARC_CONFIG_H_
|
||||||
|
|
||||||
|
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
|
||||||
|
|
||||||
#define CONFIG_LMB
|
#define CONFIG_LMB
|
||||||
|
|
||||||
#endif /*__ASM_ARC_CONFIG_H_ */
|
#endif /*__ASM_ARC_CONFIG_H_ */
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#ifndef _ASM_CONFIG_H_
|
#ifndef _ASM_CONFIG_H_
|
||||||
#define _ASM_CONFIG_H_
|
#define _ASM_CONFIG_H_
|
||||||
|
|
||||||
|
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
|
||||||
|
|
||||||
#define CONFIG_LMB
|
#define CONFIG_LMB
|
||||||
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
|
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#ifndef _ASM_CONFIG_H_
|
#ifndef _ASM_CONFIG_H_
|
||||||
#define _ASM_CONFIG_H_
|
#define _ASM_CONFIG_H_
|
||||||
|
|
||||||
|
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
|
||||||
|
|
||||||
#define CONFIG_LMB
|
#define CONFIG_LMB
|
||||||
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
|
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#ifndef _ASM_CONFIG_H_
|
#ifndef _ASM_CONFIG_H_
|
||||||
#define _ASM_CONFIG_H_
|
#define _ASM_CONFIG_H_
|
||||||
|
|
||||||
|
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
|
||||||
#define CONFIG_SANDBOX_ARCH
|
#define CONFIG_SANDBOX_ARCH
|
||||||
|
|
||||||
/* Used by drivers/spi/sandbox_spi.c and arch/sandbox/include/asm/state.h */
|
/* Used by drivers/spi/sandbox_spi.c and arch/sandbox/include/asm/state.h */
|
||||||
|
|
|
@ -961,20 +961,22 @@ static init_fnc_t init_sequence_f[] = {
|
||||||
|
|
||||||
void board_init_f(ulong boot_flags)
|
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_t data;
|
||||||
|
|
||||||
gd = &data;
|
gd = &data;
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clear global data before it is accessed at debug print
|
* Clear global data before it is accessed at debug print
|
||||||
* in initcall_run_list. Otherwise the debug print probably
|
* in initcall_run_list. Otherwise the debug print probably
|
||||||
* get the wrong vaule of gd->have_console.
|
* 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();
|
zero_global_data();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue