aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel/signal.c')
-rw-r--r--arch/sh/kernel/signal.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/arch/sh/kernel/signal.c b/arch/sh/kernel/signal.c
index 706d81ccd101..0f657d32ceb9 100644
--- a/arch/sh/kernel/signal.c
+++ b/arch/sh/kernel/signal.c
@@ -509,11 +509,8 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,
509 } 509 }
510 } else { 510 } else {
511 /* gUSA handling */ 511 /* gUSA handling */
512#ifdef CONFIG_PREEMPT 512 preempt_disable();
513 unsigned long flags;
514 513
515 local_irq_save(flags);
516#endif
517 if (regs->regs[15] >= 0xc0000000) { 514 if (regs->regs[15] >= 0xc0000000) {
518 int offset = (int)regs->regs[15]; 515 int offset = (int)regs->regs[15];
519 516
@@ -524,9 +521,8 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,
524 regs->pc = regs->regs[0] + offset - 521 regs->pc = regs->regs[0] + offset -
525 instruction_size(ctrl_inw(regs->pc-4)); 522 instruction_size(ctrl_inw(regs->pc-4));
526 } 523 }
527#ifdef CONFIG_PREEMPT 524
528 local_irq_restore(flags); 525 preempt_enable_no_resched();
529#endif
530 } 526 }
531 527
532 /* Set up the stack frame */ 528 /* Set up the stack frame */