Generate SIGBUS/BUS_ADRALN when we see a PC Alignment Exception from userland.
authorkettenis <kettenis@openbsd.org>
Mon, 18 Dec 2017 20:03:48 +0000 (20:03 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 18 Dec 2017 20:03:48 +0000 (20:03 +0000)
ok patrick@

sys/arch/arm64/arm64/trap.c

index 5e14cfd..dfe6317 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.11 2017/09/16 02:03:40 guenther Exp $ */
+/* $OpenBSD: trap.c,v 1.12 2017/12/18 20:03:48 kettenis Exp $ */
 /*-
  * Copyright (c) 2014 Andrew Turner
  * All rights reserved.
@@ -307,6 +307,11 @@ do_el0_sync(struct trapframe *frame)
                vfp_save();
                data_abort(frame, esr, 1, 1);
                break;
+       case EXCP_PC_ALIGN:
+               vfp_save();
+               sv.sival_ptr = (void *)frame->tf_elr;
+               trapsignal(p, SIGBUS, 0, BUS_ADRALN, sv);
+               break;
        case EXCP_DATA_ABORT_L:
                vfp_save();
                data_abort(frame, esr, 1, 0);