diff options
author | andrew <andrew@FreeBSD.org> | 2016-02-03 17:00:19 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2016-02-03 17:00:19 +0000 |
commit | 1ef2c8adf6388662de306ad64df5252c02e3bfbd (patch) | |
tree | 465986f5858450e3771c1204021be25cea2bd40b /sys/arm64 | |
parent | 9ad64bd8b3b9fdd2ebb2e8a3ccfb22c26b054885 (diff) | |
download | FreeBSD-src-1ef2c8adf6388662de306ad64df5252c02e3bfbd.zip FreeBSD-src-1ef2c8adf6388662de306ad64df5252c02e3bfbd.tar.gz |
Handle a misaligned stack pointer exception from userspace. The exception
still needs to be enabled, but this will help with testing.
Sponsored by: ABT Systems Ltd
Diffstat (limited to 'sys/arm64')
-rw-r--r-- | sys/arm64/arm64/trap.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c index 89d6d0c..10e3f41 100644 --- a/sys/arm64/arm64/trap.c +++ b/sys/arm64/arm64/trap.c @@ -374,6 +374,10 @@ do_el0_sync(struct trapframe *frame) case EXCP_UNKNOWN: el0_excp_unknown(frame); break; + case EXCP_SP_ALIGN: + call_trapsignal(td, SIGBUS, BUS_ADRALN, (void *)frame->tf_sp); + userret(td, frame); + break; case EXCP_PC_ALIGN: call_trapsignal(td, SIGBUS, BUS_ADRALN, (void *)frame->tf_elr); userret(td, frame); |