]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
When trying to execute from a misaligned address raise a SIGBUS with the
authorandrew <andrew@FreeBSD.org>
Sun, 4 Oct 2015 21:16:45 +0000 (21:16 +0000)
committerandrew <andrew@FreeBSD.org>
Sun, 4 Oct 2015 21:16:45 +0000 (21:16 +0000)
invalid address alignment code.

Obtained from: EuroBSDCon
Sponsored by: ABT Systems Ltd

sys/arm64/arm64/trap.c

index 058490c6732a385cab75bfe247c3bf6666b6b48a..a29f91587e90680506f8431441e61c44d31ce438 100644 (file)
@@ -377,6 +377,11 @@ do_el0_sync(struct trapframe *frame)
        case EXCP_UNKNOWN:
                el0_excp_unknown(frame);
                break;
+       case EXCP_PC_ALIGN:
+               td = curthread;
+               call_trapsignal(td, SIGBUS, BUS_ADRALN, (void *)frame->tf_elr);
+               userret(td, frame);
+               break;
        case EXCP_BRK:
                td = curthread;
                call_trapsignal(td, SIGTRAP, TRAP_BRKPT, (void *)frame->tf_elr);