summaryrefslogtreecommitdiff
path: root/common/board_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/board_r.c')
-rw-r--r--common/board_r.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/common/board_r.c b/common/board_r.c
index 472987d5d5..1ad44bbe3f 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -154,6 +154,13 @@ static int initr_reloc_global_data(void)
gd->fdt_blob += gd->reloc_off;
#endif
#ifdef CONFIG_EFI_LOADER
+ /*
+ * On the ARM architecture gd is mapped to a fixed register (r9 or x18).
+ * As this register may be overwritten by an EFI payload we save it here
+ * and restore it on every callback entered.
+ */
+ efi_save_gd();
+
efi_runtime_relocate(gd->relocaddr, NULL);
#endif