diff options
| author | Brian Gerst <brgerst@gmail.com> | 2009-12-09 19:01:54 -0500 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2009-12-09 19:28:59 -0500 |
| commit | 052acad48a566a6dbcccb95e5d22e5e1b7cac8dd (patch) | |
| tree | 3a192104ec0f484034162a769a647525bca9c94e | |
| parent | 11cf88bd0b8165b65aaabaee0977e9a3ad474ab7 (diff) | |
x86: Merge sys_sigaltstack
Change 32-bit sys_sigaltstack to PTREGSCALL2, and merge with 64-bit.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
LKML-Reference: <1260403316-5679-5-git-send-email-brgerst@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| -rw-r--r-- | arch/x86/include/asm/syscalls.h | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/entry_32.S | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/signal.c | 12 |
3 files changed, 5 insertions, 17 deletions
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h index 48c48e508b9f..94e0b61fb040 100644 --- a/arch/x86/include/asm/syscalls.h +++ b/arch/x86/include/asm/syscalls.h | |||
| @@ -31,6 +31,9 @@ asmlinkage int sys_modify_ldt(int, void __user *, unsigned long); | |||
| 31 | 31 | ||
| 32 | /* kernel/signal.c */ | 32 | /* kernel/signal.c */ |
| 33 | long sys_rt_sigreturn(struct pt_regs *); | 33 | long sys_rt_sigreturn(struct pt_regs *); |
| 34 | long sys_sigaltstack(const stack_t __user *, stack_t __user *, | ||
| 35 | struct pt_regs *); | ||
| 36 | |||
| 34 | 37 | ||
| 35 | /* kernel/tls.c */ | 38 | /* kernel/tls.c */ |
| 36 | asmlinkage int sys_set_thread_area(struct user_desc __user *); | 39 | asmlinkage int sys_set_thread_area(struct user_desc __user *); |
| @@ -46,7 +49,6 @@ int sys_clone(struct pt_regs *); | |||
| 46 | asmlinkage int sys_sigsuspend(int, int, old_sigset_t); | 49 | asmlinkage int sys_sigsuspend(int, int, old_sigset_t); |
| 47 | asmlinkage int sys_sigaction(int, const struct old_sigaction __user *, | 50 | asmlinkage int sys_sigaction(int, const struct old_sigaction __user *, |
| 48 | struct old_sigaction __user *); | 51 | struct old_sigaction __user *); |
| 49 | int sys_sigaltstack(struct pt_regs *); | ||
| 50 | unsigned long sys_sigreturn(struct pt_regs *); | 52 | unsigned long sys_sigreturn(struct pt_regs *); |
| 51 | 53 | ||
| 52 | /* kernel/sys_i386_32.c */ | 54 | /* kernel/sys_i386_32.c */ |
| @@ -76,10 +78,6 @@ asmlinkage long sys_clone(unsigned long, unsigned long, | |||
| 76 | struct pt_regs *); | 78 | struct pt_regs *); |
| 77 | long sys_arch_prctl(int, unsigned long); | 79 | long sys_arch_prctl(int, unsigned long); |
| 78 | 80 | ||
| 79 | /* kernel/signal.c */ | ||
| 80 | asmlinkage long sys_sigaltstack(const stack_t __user *, stack_t __user *, | ||
| 81 | struct pt_regs *); | ||
| 82 | |||
| 83 | /* kernel/sys_x86_64.c */ | 81 | /* kernel/sys_x86_64.c */ |
| 84 | struct new_utsname; | 82 | struct new_utsname; |
| 85 | 83 | ||
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index a96a0d8a0fdb..621ef4599416 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
| @@ -763,7 +763,7 @@ PTREGSCALL0(fork) | |||
| 763 | PTREGSCALL0(clone) | 763 | PTREGSCALL0(clone) |
| 764 | PTREGSCALL0(vfork) | 764 | PTREGSCALL0(vfork) |
| 765 | PTREGSCALL3(execve) | 765 | PTREGSCALL3(execve) |
| 766 | PTREGSCALL0(sigaltstack) | 766 | PTREGSCALL2(sigaltstack) |
| 767 | PTREGSCALL0(sigreturn) | 767 | PTREGSCALL0(sigreturn) |
| 768 | PTREGSCALL0(rt_sigreturn) | 768 | PTREGSCALL0(rt_sigreturn) |
| 769 | PTREGSCALL0(vm86) | 769 | PTREGSCALL0(vm86) |
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index 74fe6d86dc5d..4fd173cd8e57 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c | |||
| @@ -545,22 +545,12 @@ sys_sigaction(int sig, const struct old_sigaction __user *act, | |||
| 545 | } | 545 | } |
| 546 | #endif /* CONFIG_X86_32 */ | 546 | #endif /* CONFIG_X86_32 */ |
| 547 | 547 | ||
| 548 | #ifdef CONFIG_X86_32 | 548 | long |
| 549 | int sys_sigaltstack(struct pt_regs *regs) | ||
| 550 | { | ||
| 551 | const stack_t __user *uss = (const stack_t __user *)regs->bx; | ||
| 552 | stack_t __user *uoss = (stack_t __user *)regs->cx; | ||
| 553 | |||
| 554 | return do_sigaltstack(uss, uoss, regs->sp); | ||
| 555 | } | ||
| 556 | #else /* !CONFIG_X86_32 */ | ||
| 557 | asmlinkage long | ||
| 558 | sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, | 549 | sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, |
| 559 | struct pt_regs *regs) | 550 | struct pt_regs *regs) |
| 560 | { | 551 | { |
| 561 | return do_sigaltstack(uss, uoss, regs->sp); | 552 | return do_sigaltstack(uss, uoss, regs->sp); |
| 562 | } | 553 | } |
| 563 | #endif /* CONFIG_X86_32 */ | ||
| 564 | 554 | ||
| 565 | /* | 555 | /* |
| 566 | * Do a signal return; undo the signal stack. | 556 | * Do a signal return; undo the signal stack. |
