summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2017-08-14 21:53:35 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2017-08-14 21:53:35 +0000
commitcbd3f53e3dda936ee2f813b06fa62a0690a6e60d (patch)
treee17c579ee40db770525659c4f4abff509c7cd6f7
parent1e37fb8ebde4489a5008d62f99b2114a87bf922e (diff)
Generate SIGILL for EXCP_UNKNOWN.
ok drahn@
-rw-r--r--sys/arch/arm64/arm64/trap.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/arch/arm64/arm64/trap.c b/sys/arch/arm64/arm64/trap.c
index d45c3873f62..537cd199515 100644
--- a/sys/arch/arm64/arm64/trap.c
+++ b/sys/arch/arm64/arm64/trap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.9 2017/08/09 05:53:11 jsg Exp $ */
+/* $OpenBSD: trap.c,v 1.10 2017/08/14 21:53:34 kettenis Exp $ */
/*-
* Copyright (c) 2014 Andrew Turner
* All rights reserved.
@@ -291,6 +291,11 @@ do_el0_sync(struct trapframe *frame)
refreshcreds(p);
switch(exception) {
+ case EXCP_UNKNOWN:
+ vfp_save();
+ sv.sival_ptr = (void *)frame->tf_elr;
+ trapsignal(p, SIGILL, 0, ILL_ILLOPC, sv);
+ break;
case EXCP_FP_SIMD:
case EXCP_TRAP_FP:
vfp_fault(frame->tf_elr, 0, frame, exception);