summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2020-05-27 20:04:22 +0200
committerTom Rini <trini@konsulko.com>2020-07-07 18:23:48 -0400
commit7f642cb287ee046e1c2a0a244fd924c664f48d67 (patch)
tree88754c1d1976f3a1096a62b1a57bb2a1ea1a88cb
parenta20f0c820fb024a48f667334777ca4022838693d (diff)
downloadu-boot-7f642cb287ee046e1c2a0a244fd924c664f48d67.tar.gz
trace: clang compatible handling of gd register
On ARM systems gd is stored in register r9 or x18. When compiling with clang gd is defined as a macro calling function gd_ptr(). So we can not make assignments to gd. Use function set_gd() for setting the register on ARM. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--lib/trace.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/trace.c b/lib/trace.c
index ea8c8e0d40..831283c283 100644
--- a/lib/trace.c
+++ b/lib/trace.c
@@ -57,12 +57,12 @@ static inline uintptr_t __attribute__((no_instrument_function))
return offset / FUNC_SITE_SIZE;
}
-#ifdef CONFIG_EFI_LOADER
+#if defined(CONFIG_EFI_LOADER) && defined(CONFIG_ARM)
/**
* trace_gd - the value of the gd register
*/
-static volatile void *trace_gd;
+static volatile gd_t *trace_gd;
/**
* trace_save_gd() - save the value of the gd register
@@ -82,10 +82,10 @@ static void __attribute__((no_instrument_function)) trace_save_gd(void)
*/
static void __attribute__((no_instrument_function)) trace_swap_gd(void)
{
- volatile void *temp_gd = trace_gd;
+ volatile gd_t *temp_gd = trace_gd;
trace_gd = gd;
- gd = temp_gd;
+ set_gd(temp_gd);
}
#else