mirror of
https://github.com/torvalds/linux.git
synced 2024-12-20 01:52:13 +00:00
sh: Tidy up gUSA preempt handling.
Currently gUSA toggles hardirqs to disable preemption in the signal handler. Make the preemption toggling explicit, and kill off some CONFIG_PREEMPT ifdefs in the process. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
023ef184ff
commit
e5137682a1
@ -509,11 +509,8 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* gUSA handling */
|
/* gUSA handling */
|
||||||
#ifdef CONFIG_PREEMPT
|
preempt_disable();
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
#endif
|
|
||||||
if (regs->regs[15] >= 0xc0000000) {
|
if (regs->regs[15] >= 0xc0000000) {
|
||||||
int offset = (int)regs->regs[15];
|
int offset = (int)regs->regs[15];
|
||||||
|
|
||||||
@ -524,9 +521,8 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,
|
|||||||
regs->pc = regs->regs[0] + offset -
|
regs->pc = regs->regs[0] + offset -
|
||||||
instruction_size(ctrl_inw(regs->pc-4));
|
instruction_size(ctrl_inw(regs->pc-4));
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_PREEMPT
|
|
||||||
local_irq_restore(flags);
|
preempt_enable_no_resched();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set up the stack frame */
|
/* Set up the stack frame */
|
||||||
|
Loading…
Reference in New Issue
Block a user