summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDoug Anderson <dianders@chromium.org>2013-04-17 16:13:41 +0000
committerSimon Glass <sjg@chromium.org>2013-05-13 13:33:21 -0700
commit150678a5820bed338c1c8de570c451bc77c15900 (patch)
treea988ef54d38a9e55c064a75456156b5bfd8d5cc5 /include
parente802ee0f990b634138d55844ee36e4125a0fa0fc (diff)
downloadu-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.h15
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);