mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02: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:
@@ -331,6 +331,14 @@ int bootstage_stash(void *base, int size);
|
||||
*/
|
||||
int bootstage_unstash(void *base, int size);
|
||||
|
||||
/**
|
||||
* bootstage_init() - Prepare bootstage for use
|
||||
*
|
||||
* @first: true if this is the first time bootstage is set up. This causes it
|
||||
* to add a 'reset' record with a time of 0.
|
||||
*/
|
||||
int bootstage_init(bool first);
|
||||
|
||||
#else
|
||||
static inline ulong bootstage_add_record(enum bootstage_id id,
|
||||
const char *name, int flags, ulong mark)
|
||||
@@ -391,6 +399,11 @@ static inline int bootstage_unstash(void *base, int size)
|
||||
{
|
||||
return 0; /* Pretend to succeed */
|
||||
}
|
||||
|
||||
static inline int bootstage_init(bool first)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_BOOTSTAGE */
|
||||
|
||||
/* Helper macro for adding a bootstage to a line of code */
|
||||
|
Reference in New Issue
Block a user