summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/arm64/arm64/trap.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c
index 027c562..d7209de1 100644
--- a/sys/arm64/arm64/trap.c
+++ b/sys/arm64/arm64/trap.c
@@ -135,8 +135,13 @@ svc_handler(struct thread *td, struct trapframe *frame)
struct syscall_args sa;
int error;
- error = syscallenter(td, &sa);
- syscallret(td, error, &sa);
+ if ((frame->tf_esr & ESR_ELx_ISS_MASK) == 0) {
+ error = syscallenter(td, &sa);
+ syscallret(td, error, &sa);
+ } else {
+ call_trapsignal(td, SIGILL, ILL_ILLOPN, (void *)frame->tf_elr);
+ userret(td, frame);
+ }
}
static void
OpenPOWER on IntegriCloud