diff options
author | dfr <dfr@FreeBSD.org> | 2001-04-24 15:55:47 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2001-04-24 15:55:47 +0000 |
commit | ff98f99d31fb9de574ed9f2785c44461b2177c52 (patch) | |
tree | 638c7b411ea81d30e196ce70f41ec41564e2ab95 /sys/ia64 | |
parent | 08ae27f316a5f87f524fe449cd506118c3dfef61 (diff) | |
download | FreeBSD-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.c | 5 |
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 |