summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2015-10-04 21:16:45 +0000
committerandrew <andrew@FreeBSD.org>2015-10-04 21:16:45 +0000
commit771796b063b65eae334aa668ceb7a63c233c926f (patch)
treee3e1c64ca7f986a7ceecbe41fdc5e04cc9781137
parente2681931e491c40d3418500651c1578e5b89a567 (diff)
downloadFreeBSD-src-771796b063b65eae334aa668ceb7a63c233c926f.zip
FreeBSD-src-771796b063b65eae334aa668ceb7a63c233c926f.tar.gz
When trying to execute from a misaligned address raise a SIGBUS with the
invalid address alignment code. Obtained from: EuroBSDCon Sponsored by: ABT Systems Ltd
-rw-r--r--sys/arm64/arm64/trap.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c
index 058490c..a29f915 100644
--- a/sys/arm64/arm64/trap.c
+++ b/sys/arm64/arm64/trap.c
@@ -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);
OpenPOWER on IntegriCloud