diff options
| author | Daniel Eischen <deischen@FreeBSD.org> | 2003-03-29 16:38:15 +0000 |
|---|---|---|
| committer | Daniel Eischen <deischen@FreeBSD.org> | 2003-03-29 16:38:15 +0000 |
| commit | 67aba1c6a48e9a611ef4f2262ca1cca742cfcff1 (patch) | |
| tree | be90800fdebe1c1f5dc9bbc462cc3492b4350fad /lib | |
| parent | e3a2085326c8be8925c5a87c127514c8a945c63d (diff) | |
Notes
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libc/i386/gen/signalcontext.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/libc/i386/gen/signalcontext.c b/lib/libc/i386/gen/signalcontext.c index a66e2db16fc3..50c4889a0df5 100644 --- a/lib/libc/i386/gen/signalcontext.c +++ b/lib/libc/i386/gen/signalcontext.c @@ -56,7 +56,8 @@ __signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func) */ p = (register_t *)(void *)(intptr_t)ucp->uc_mcontext.mc_esp; *--p = (register_t)(intptr_t)ucp; - p -= sizeof(struct sigframe); + p = (register_t *)((u_register_t)p & ~0xF); /* Align to 16 bytes. */ + p = (register_t *)((u_register_t)p - sizeof(struct sigframe)); sfp = (struct sigframe *)p; bzero(sfp, sizeof(struct sigframe)); sfp->sf_signum = sig; |
