diff options
Diffstat (limited to 'arch/sparc64/kernel/signal.c')
-rw-r--r-- | arch/sparc64/kernel/signal.c | 16 |
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 | |||
242 | static long _sigpause_common(old_sigset_t set) | 239 | static 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 = ¤t->blocked; | 528 | oldset = ¤t->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 *); |