diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2020-05-27 21:04:22 +0300 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-07-08 01:23:48 +0300 |
commit | 7f642cb287ee046e1c2a0a244fd924c664f48d67 (patch) | |
tree | 88754c1d1976f3a1096a62b1a57bb2a1ea1a88cb | |
parent | a20f0c820fb024a48f667334777ca4022838693d (diff) | |
download | u-boot-7f642cb287ee046e1c2a0a244fd924c664f48d67.tar.xz |
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.c | 8 |
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 |