diff options
author | Andrew Turner <andrew@FreeBSD.org> | 2023-03-31 09:15:45 +0000 |
---|---|---|
committer | Andrew Turner <andrew@FreeBSD.org> | 2023-03-31 09:15:45 +0000 |
commit | 3a0cc6fe61ea29334c17dfb71bf24ba9e604ab4c (patch) | |
tree | 4a8d3e85987eb5f75af2018e30d2910d92dd72c9 /sys | |
parent | 3f0083c4e30ab41fad1e93e4138767df42dbdf20 (diff) | |
download | src-3a0cc6fe61ea29334c17dfb71bf24ba9e604ab4c.tar.gz src-3a0cc6fe61ea29334c17dfb71bf24ba9e604ab4c.zip |
Handle the arm64 unknown exception separately
Rather than falling through to the default case handle the unknown
exception with its own panic message. As ESR_EL1 is zero for this
exception stop printing it.
Sponsored by: Arm Ltd
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arm64/arm64/trap.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c index 367a31cbe1de..0ee1bed0c35a 100644 --- a/sys/arm64/arm64/trap.c +++ b/sys/arm64/arm64/trap.c @@ -549,9 +549,11 @@ do_el1h_sync(struct thread *td, struct trapframe *frame) case EXCP_UNKNOWN: if (undef_insn(1, frame)) break; - printf("Undefined instruction: %08x\n", + print_registers(frame); + print_gp_register("far", far); + panic("Undefined instruction: %08x", *(uint32_t *)frame->tf_elr); - /* FALLTHROUGH */ + break; default: print_registers(frame); print_gp_register("far", far); |