1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 08:42:12 +02:00

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>
This commit is contained in:
Heinrich Schuchardt
2020-05-27 20:04:22 +02:00
committed by Tom Rini
parent a20f0c820f
commit 7f642cb287

View File

@@ -57,12 +57,12 @@ static inline uintptr_t __attribute__((no_instrument_function))
return offset / FUNC_SITE_SIZE; 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 * 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 * 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) 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; trace_gd = gd;
gd = temp_gd; set_gd(temp_gd);
} }
#else #else