Generate SIGBUS/BUS_ADRALN when we see a SP Alignment Exception from userland.
authorkettenis <kettenis@openbsd.org>
Sun, 24 Dec 2017 10:32:25 +0000 (10:32 +0000)
committerkettenis <kettenis@openbsd.org>
Sun, 24 Dec 2017 10:32:25 +0000 (10:32 +0000)
ok jsg@

sys/arch/arm64/arm64/trap.c

index dfe6317..01c3c92 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.12 2017/12/18 20:03:48 kettenis Exp $ */
+/* $OpenBSD: trap.c,v 1.13 2017/12/24 10:32:25 kettenis Exp $ */
 /*-
  * Copyright (c) 2014 Andrew Turner
  * All rights reserved.
@@ -312,6 +312,11 @@ do_el0_sync(struct trapframe *frame)
                sv.sival_ptr = (void *)frame->tf_elr;
                trapsignal(p, SIGBUS, 0, BUS_ADRALN, sv);
                break;
+       case EXCP_SP_ALIGN:
+               vfp_save();
+               sv.sival_ptr = (void *)frame->tf_sp;
+               trapsignal(p, SIGBUS, 0, BUS_ADRALN, sv);
+               break;
        case EXCP_DATA_ABORT_L:
                vfp_save();
                data_abort(frame, esr, 1, 0);