mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00
bootstage: Convert to use malloc()
At present bootstage uses the data section of the image to store its information. There are a few problems with this: - It does not work on all boards (e.g. those which run from flash before relocation) - Allocated strings still point back to the pre-relocation data after relocation Now that U-Boot has a pre-relocation malloc() we can use this instead, with a pointer to the data in global_data. Update bootstage to do this and set up an init routine to allocate the memory. Now that we have a real init function, we can drop the fake 'reset' record and add a normal one instead. Note that part of the problem with allocated strings remains. They are reallocated but this will only work where pre-relocation memory is accessible after relocation. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@ -673,8 +673,14 @@ static int jump_to_copy(void)
|
||||
#endif
|
||||
|
||||
/* Record the board_init_f() bootstage (after arch_cpu_init()) */
|
||||
static int mark_bootstage(void)
|
||||
static int initf_bootstage(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bootstage_init(true);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_F, "board_init_f");
|
||||
|
||||
return 0;
|
||||
@ -735,7 +741,7 @@ static const init_fnc_t init_sequence_f[] = {
|
||||
mach_cpu_init, /* SoC/machine dependent CPU setup */
|
||||
initf_dm,
|
||||
arch_cpu_init_dm,
|
||||
mark_bootstage, /* need timer, go after init dm */
|
||||
initf_bootstage, /* need timer, go after init dm */
|
||||
#if defined(CONFIG_BOARD_EARLY_INIT_F)
|
||||
board_early_init_f,
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user