aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/signal.c')
-rw-r--r--arch/sparc64/kernel/signal.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/arch/sparc64/kernel/signal.c b/arch/sparc64/kernel/signal.c
index 77a3e8592cbc..f2d88d8f7a42 100644
--- a/arch/sparc64/kernel/signal.c
+++ b/arch/sparc64/kernel/signal.c
@@ -8,7 +8,7 @@
8 * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) 8 * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
9 */ 9 */
10 10
11#ifdef CONFIG_SPARC32_COMPAT 11#ifdef CONFIG_COMPAT
12#include <linux/compat.h> /* for compat_old_sigset_t */ 12#include <linux/compat.h> /* for compat_old_sigset_t */
13#endif 13#endif
14#include <linux/sched.h> 14#include <linux/sched.h>
@@ -236,9 +236,6 @@ struct rt_signal_frame {
236 __siginfo_fpu_t fpu_state; 236 __siginfo_fpu_t fpu_state;
237}; 237};
238 238
239/* Align macros */
240#define RT_ALIGNEDSZ (((sizeof(struct rt_signal_frame) + 7) & (~7)))
241
242static long _sigpause_common(old_sigset_t set) 239static long _sigpause_common(old_sigset_t set)
243{ 240{
244 set &= _BLOCKABLE; 241 set &= _BLOCKABLE;
@@ -400,7 +397,7 @@ setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs,
400 synchronize_user_stack(); 397 synchronize_user_stack();
401 save_and_clear_fpu(); 398 save_and_clear_fpu();
402 399
403 sigframe_size = RT_ALIGNEDSZ; 400 sigframe_size = sizeof(struct rt_signal_frame);
404 if (!(current_thread_info()->fpsaved[0] & FPRS_FEF)) 401 if (!(current_thread_info()->fpsaved[0] & FPRS_FEF))
405 sigframe_size -= sizeof(__siginfo_fpu_t); 402 sigframe_size -= sizeof(__siginfo_fpu_t);
406 403
@@ -516,11 +513,10 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
516 struct k_sigaction ka; 513 struct k_sigaction ka;
517 sigset_t *oldset; 514 sigset_t *oldset;
518 siginfo_t info; 515 siginfo_t info;
519 int signr, tt; 516 int signr;
520 517
521 tt = regs->magic & 0x1ff; 518 if (pt_regs_is_syscall(regs)) {
522 if (tt == 0x110 || tt == 0x111 || tt == 0x16d) { 519 pt_regs_clear_trap_type(regs);
523 regs->magic &= ~0x1ff;
524 cookie.restart_syscall = 1; 520 cookie.restart_syscall = 1;
525 } else 521 } else
526 cookie.restart_syscall = 0; 522 cookie.restart_syscall = 0;
@@ -531,7 +527,7 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
531 else 527 else
532 oldset = &current->blocked; 528 oldset = &current->blocked;
533 529
534#ifdef CONFIG_SPARC32_COMPAT 530#ifdef CONFIG_COMPAT
535 if (test_thread_flag(TIF_32BIT)) { 531 if (test_thread_flag(TIF_32BIT)) {
536 extern void do_signal32(sigset_t *, struct pt_regs *, 532 extern void do_signal32(sigset_t *, struct pt_regs *,
537 struct signal_deliver_cookie *); 533 struct signal_deliver_cookie *);