提交 2a1680e3 编写于 作者: Y York Sun 提交者: Tom Rini

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: NYork 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: NSimon Glass <sjg@chromium.org>
上级 7e18a1b9
...@@ -451,6 +451,12 @@ The following options need to be configured: ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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[] = { ...@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册