summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2001-04-24 15:55:47 +0000
committerdfr <dfr@FreeBSD.org>2001-04-24 15:55:47 +0000
commitff98f99d31fb9de574ed9f2785c44461b2177c52 (patch)
tree638c7b411ea81d30e196ce70f41ec41564e2ab95 /sys/ia64
parent08ae27f316a5f87f524fe449cd506118c3dfef61 (diff)
downloadFreeBSD-src-ff98f99d31fb9de574ed9f2785c44461b2177c52.zip
FreeBSD-src-ff98f99d31fb9de574ed9f2785c44461b2177c52.tar.gz
Align stack pointer and backing store pointer to 16 byte boundary when
delivering signals.
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/machdep.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c
index 5f954fe..a113c9b 100644
--- a/sys/ia64/ia64/machdep.c
+++ b/sys/ia64/ia64/machdep.c
@@ -814,6 +814,11 @@ sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
sbs = (u_int64_t) p->p_sigstk.ss_sp;
sfp = (struct sigframe *)((caddr_t)p->p_sigstk.ss_sp +
p->p_sigstk.ss_size - rndfsize);
+ /*
+ * Align sp and bsp.
+ */
+ sbs = (sbs + 15) & ~15;
+ sfp = (struct sigframe *)((u_int64_t)sfp & ~15);
#if defined(COMPAT_43) || defined(COMPAT_SUNOS)
p->p_sigstk.ss_flags |= SS_ONSTACK;
#endif
OpenPOWER on IntegriCloud