mirror of
https://xff.cz/git/u-boot/
synced 2025-09-26 04:51:17 +02:00
riscv: allow resume after exception
If CSRs like seed are readable by S-mode, may not be determinable by S-mode. For safe driver probing allow to resume via a longjmp after an exception. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
This commit is contained in:
committed by
Leo Yu-Chi Liang
parent
b8a902b814
commit
9757cae991
@@ -12,6 +12,7 @@
|
||||
#include <linux/compat.h>
|
||||
#include <efi_loader.h>
|
||||
#include <hang.h>
|
||||
#include <interrupt.h>
|
||||
#include <irq_func.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <asm/ptrace.h>
|
||||
@@ -21,6 +22,13 @@
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
static struct resume_data *resume;
|
||||
|
||||
void set_resume(struct resume_data *data)
|
||||
{
|
||||
resume = data;
|
||||
}
|
||||
|
||||
static void show_efi_loaded_images(uintptr_t epc)
|
||||
{
|
||||
efi_print_image_infos((void *)epc);
|
||||
@@ -105,6 +113,11 @@ 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 (code < ARRAY_SIZE(exception_code))
|
||||
printf("Unhandled exception: %s\n", exception_code[code]);
|
||||
else
|
||||
|
Reference in New Issue
Block a user