diff options
Diffstat (limited to 'arch/avr32')
-rw-r--r-- | arch/avr32/include/asm/signal.h | 11 | ||||
-rw-r--r-- | arch/avr32/include/asm/unistd.h | 2 | ||||
-rw-r--r-- | arch/avr32/kernel/signal.c | 15 | ||||
-rw-r--r-- | arch/avr32/kernel/syscall-stubs.S | 6 | ||||
-rw-r--r-- | arch/avr32/kernel/syscall_table.S | 2 |
5 files changed, 4 insertions, 32 deletions
diff --git a/arch/avr32/include/asm/signal.h b/arch/avr32/include/asm/signal.h index 9326d182e9e5..d875eb6a3f3c 100644 --- a/arch/avr32/include/asm/signal.h +++ b/arch/avr32/include/asm/signal.h | |||
@@ -23,16 +23,7 @@ typedef struct { | |||
23 | unsigned long sig[_NSIG_WORDS]; | 23 | unsigned long sig[_NSIG_WORDS]; |
24 | } sigset_t; | 24 | } sigset_t; |
25 | 25 | ||
26 | struct sigaction { | 26 | #define __ARCH_HAS_SA_RESTORER |
27 | __sighandler_t sa_handler; | ||
28 | unsigned long sa_flags; | ||
29 | __sigrestore_t sa_restorer; | ||
30 | sigset_t sa_mask; /* mask last for extensibility */ | ||
31 | }; | ||
32 | |||
33 | struct k_sigaction { | ||
34 | struct sigaction sa; | ||
35 | }; | ||
36 | 27 | ||
37 | #include <asm/sigcontext.h> | 28 | #include <asm/sigcontext.h> |
38 | #undef __HAVE_ARCH_SIG_BITOPS | 29 | #undef __HAVE_ARCH_SIG_BITOPS |
diff --git a/arch/avr32/include/asm/unistd.h b/arch/avr32/include/asm/unistd.h index 0bdf6371574e..dc4d5a931112 100644 --- a/arch/avr32/include/asm/unistd.h +++ b/arch/avr32/include/asm/unistd.h | |||
@@ -37,8 +37,6 @@ | |||
37 | #define __ARCH_WANT_SYS_GETPGRP | 37 | #define __ARCH_WANT_SYS_GETPGRP |
38 | #define __ARCH_WANT_SYS_LLSEEK | 38 | #define __ARCH_WANT_SYS_LLSEEK |
39 | #define __ARCH_WANT_SYS_GETPGRP | 39 | #define __ARCH_WANT_SYS_GETPGRP |
40 | #define __ARCH_WANT_SYS_RT_SIGACTION | ||
41 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | ||
42 | #define __ARCH_WANT_SYS_FORK | 40 | #define __ARCH_WANT_SYS_FORK |
43 | #define __ARCH_WANT_SYS_VFORK | 41 | #define __ARCH_WANT_SYS_VFORK |
44 | #define __ARCH_WANT_SYS_CLONE | 42 | #define __ARCH_WANT_SYS_CLONE |
diff --git a/arch/avr32/kernel/signal.c b/arch/avr32/kernel/signal.c index 5e01c3a40ced..b80c0b3d2bab 100644 --- a/arch/avr32/kernel/signal.c +++ b/arch/avr32/kernel/signal.c | |||
@@ -21,12 +21,6 @@ | |||
21 | #include <asm/ucontext.h> | 21 | #include <asm/ucontext.h> |
22 | #include <asm/syscalls.h> | 22 | #include <asm/syscalls.h> |
23 | 23 | ||
24 | asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, | ||
25 | struct pt_regs *regs) | ||
26 | { | ||
27 | return do_sigaltstack(uss, uoss, regs->sp); | ||
28 | } | ||
29 | |||
30 | struct rt_sigframe | 24 | struct rt_sigframe |
31 | { | 25 | { |
32 | struct siginfo info; | 26 | struct siginfo info; |
@@ -91,7 +85,7 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs) | |||
91 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) | 85 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) |
92 | goto badframe; | 86 | goto badframe; |
93 | 87 | ||
94 | if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->sp) == -EFAULT) | 88 | if (restore_altstack(&frame->uc.uc_stack)) |
95 | goto badframe; | 89 | goto badframe; |
96 | 90 | ||
97 | pr_debug("Context restored: pc = %08lx, lr = %08lx, sp = %08lx\n", | 91 | pr_debug("Context restored: pc = %08lx, lr = %08lx, sp = %08lx\n", |
@@ -175,12 +169,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
175 | /* Set up the ucontext */ | 169 | /* Set up the ucontext */ |
176 | err |= __put_user(0, &frame->uc.uc_flags); | 170 | err |= __put_user(0, &frame->uc.uc_flags); |
177 | err |= __put_user(NULL, &frame->uc.uc_link); | 171 | err |= __put_user(NULL, &frame->uc.uc_link); |
178 | err |= __put_user((void __user *)current->sas_ss_sp, | 172 | err |= __save_altstack(&frame->uc.uc_stack, regs->sp); |
179 | &frame->uc.uc_stack.ss_sp); | ||
180 | err |= __put_user(sas_ss_flags(regs->sp), | ||
181 | &frame->uc.uc_stack.ss_flags); | ||
182 | err |= __put_user(current->sas_ss_size, | ||
183 | &frame->uc.uc_stack.ss_size); | ||
184 | err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); | 173 | err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); |
185 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); | 174 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); |
186 | 175 | ||
diff --git a/arch/avr32/kernel/syscall-stubs.S b/arch/avr32/kernel/syscall-stubs.S index 275aab9731fd..b5fc927cd398 100644 --- a/arch/avr32/kernel/syscall-stubs.S +++ b/arch/avr32/kernel/syscall-stubs.S | |||
@@ -20,12 +20,6 @@ __sys_rt_sigsuspend: | |||
20 | mov r10, sp | 20 | mov r10, sp |
21 | rjmp sys_rt_sigsuspend | 21 | rjmp sys_rt_sigsuspend |
22 | 22 | ||
23 | .global __sys_sigaltstack | ||
24 | .type __sys_sigaltstack,@function | ||
25 | __sys_sigaltstack: | ||
26 | mov r10, sp | ||
27 | rjmp sys_sigaltstack | ||
28 | |||
29 | .global __sys_rt_sigreturn | 23 | .global __sys_rt_sigreturn |
30 | .type __sys_rt_sigreturn,@function | 24 | .type __sys_rt_sigreturn,@function |
31 | __sys_rt_sigreturn: | 25 | __sys_rt_sigreturn: |
diff --git a/arch/avr32/kernel/syscall_table.S b/arch/avr32/kernel/syscall_table.S index f27bb878da6b..017a904180c8 100644 --- a/arch/avr32/kernel/syscall_table.S +++ b/arch/avr32/kernel/syscall_table.S | |||
@@ -115,7 +115,7 @@ sys_call_table: | |||
115 | .long sys_statfs | 115 | .long sys_statfs |
116 | .long sys_fstatfs /* 100 */ | 116 | .long sys_fstatfs /* 100 */ |
117 | .long sys_vhangup | 117 | .long sys_vhangup |
118 | .long __sys_sigaltstack | 118 | .long sys_sigaltstack |
119 | .long sys_syslog | 119 | .long sys_syslog |
120 | .long sys_setitimer | 120 | .long sys_setitimer |
121 | .long sys_getitimer /* 105 */ | 121 | .long sys_getitimer /* 105 */ |