diff options
author | Simon Glass <sjg@chromium.org> | 2017-05-22 05:05:25 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-06-05 14:13:04 -0400 |
commit | b383d6c05e2587a7b3ea13855e4161bacb64feb9 (patch) | |
tree | 80f2498137f15567794d49c65deca346817fbb61 /common/board_f.c | |
parent | 5a0e275cbbc4f462495e9a7e04acf0f6bfbd13c5 (diff) |
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>
Diffstat (limited to 'common/board_f.c')
-rw-r--r-- | common/board_f.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/common/board_f.c b/common/board_f.c index fe90faf309..783c51a685 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -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 |