diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-11 01:48:37 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-11 01:48:37 -0400 |
commit | 1a04392bd6439876b1552793389cbb5be356ea54 (patch) | |
tree | 12af7b77e3b0848127f2d2871778c9c1f315578a /arch/i386/kernel/signal.c | |
parent | 68399bb5080c1d96f2110b0a040b39d3ccd7a18a (diff) | |
parent | 3c92c2ba33cd7d666c5f83cc32aa590e794e91b0 (diff) | |
download | blackbird-op-linux-1a04392bd6439876b1552793389cbb5be356ea54.tar.gz blackbird-op-linux-1a04392bd6439876b1552793389cbb5be356ea54.zip |
Merge branch 'master'
Diffstat (limited to 'arch/i386/kernel/signal.c')
-rw-r--r-- | arch/i386/kernel/signal.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c index 61eb0c8a6e47..adcd069db91e 100644 --- a/arch/i386/kernel/signal.c +++ b/arch/i386/kernel/signal.c @@ -338,7 +338,11 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) esp = (unsigned long) ka->sa.sa_restorer; } - return (void __user *)((esp - frame_size) & -8ul); + esp -= frame_size; + /* Align the stack pointer according to the i386 ABI, + * i.e. so that on function entry ((sp + 4) & 15) == 0. */ + esp = ((esp + 4) & -16ul) - 4; + return (void __user *) esp; } /* These symbols are defined with the addresses in the vsyscall page. |