diff options
author | Doug Anderson <dianders@chromium.org> | 2013-04-17 16:13:41 +0000 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2013-05-13 13:33:21 -0700 |
commit | 150678a5820bed338c1c8de570c451bc77c15900 (patch) | |
tree | a988ef54d38a9e55c064a75456156b5bfd8d5cc5 /include | |
parent | e802ee0f990b634138d55844ee36e4125a0fa0fc (diff) | |
download | u-boot-imx-150678a5820bed338c1c8de570c451bc77c15900.zip u-boot-imx-150678a5820bed338c1c8de570c451bc77c15900.tar.gz u-boot-imx-150678a5820bed338c1c8de570c451bc77c15900.tar.bz2 |
bootstage: Copy bootstage strings post-relocation
Any pointers to name strings that were passed to bootstage_mark_name()
pre-relocation should be copied post-relocation so that they don't get
trashed as the original location of U-Boot is re-used for other
purposes.
This change introduces a new API call that should be called from
board_init_r() after malloc has been initted on any board that uses
bootstage.
Signed-off-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/bootstage.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/bootstage.h b/include/bootstage.h index bdda768..c8235e8 100644 --- a/include/bootstage.h +++ b/include/bootstage.h @@ -237,6 +237,16 @@ void show_boot_progress(int val); /* This is the full bootstage implementation */ /** + * Relocate existing bootstage records + * + * Call this after relocation has happened and after malloc has been initted. + * We need to copy any pointers in bootstage records that were added pre- + * relocation, since memory can be overritten later. + * @return Always returns 0, to indicate success + */ +int bootstage_relocate(void); + +/** * Add a new bootstage record * * @param id Bootstage ID to use (ignored if flags & BOOTSTAGEF_ALLOC) @@ -326,6 +336,11 @@ static inline ulong bootstage_add_record(enum bootstage_id id, * and won't even do that unless CONFIG_SHOW_BOOT_PROGRESS is defined */ +static inline int bootstage_relocate(void) +{ + return 0; +} + static inline ulong bootstage_mark(enum bootstage_id id) { show_boot_progress(id); |