diff --git a/arch/riscv/include/asm/global_data.h b/arch/riscv/include/asm/global_data.h index 593d9276d35..d356752a56a 100644 --- a/arch/riscv/include/asm/global_data.h +++ b/arch/riscv/include/asm/global_data.h @@ -42,6 +42,7 @@ struct arch_global_data { #ifdef CONFIG_SMBIOS ulong smbios_start; /* Start address of SMBIOS table */ #endif + struct resume_data *resume; }; #include diff --git a/arch/riscv/lib/interrupts.c b/arch/riscv/lib/interrupts.c index 714cc92d03e..ef1056eeb6f 100644 --- a/arch/riscv/lib/interrupts.c +++ b/arch/riscv/lib/interrupts.c @@ -22,11 +22,9 @@ DECLARE_GLOBAL_DATA_PTR; -static struct resume_data *resume; - void set_resume(struct resume_data *data) { - resume = data; + gd->arch.resume = data; } static void show_efi_loaded_images(uintptr_t epc) @@ -138,9 +136,9 @@ static void _exit_trap(ulong code, ulong epc, ulong tval, struct pt_regs *regs) "Store/AMO page fault", }; - if (resume) { - resume->code = code; - longjmp(resume->jump, 1); + if (gd->arch.resume) { + gd->arch.resume->code = code; + longjmp(gd->arch.resume->jump, 1); } if (code < ARRAY_SIZE(exception_code))