diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-13 12:49:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-13 12:49:04 -0400 |
commit | dcf397f037f52add9945eced57ca300ab6a4413c (patch) | |
tree | e78767d164589e9097a54bf564b072fb01f80820 /arch/sh/kernel/signal.c | |
parent | 6faf035cf9fdd8283c2b2b2c34b76b5445ec6fc4 (diff) | |
parent | 68ee0f9c98a42e36f9eab29155b2bb0e7e409ac6 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (124 commits)
sh: allow building for both r2d boards in same binary.
sh: fix r2d board detection
sh: Discard .exit.text/.exit.data at runtime.
sh: Fix up some section alignments in linker script.
sh: Fix SH-4 DMAC CHCR masking.
sh: Rip out left-over nommu cond syscall cruft.
sh: Make kgdb i-cache flushing less inept.
sh: kgdb section mismatches and tidying.
sh: cleanup struct irqaction initializers.
sh: early_printk tidying.
video: pvr2fb: Add TV (RGB) support to Dreamcast PVR driver.
sh: Conditionalize gUSA support.
sh: Follow gUSA preempt changes in __switch_to().
sh: Tidy up gUSA preempt handling.
sh: __copy_user() optimizations for small copies.
sh: clkfwk: Support multi-level clock propagation.
sh: Fix URAM start address on SH7785.
sh: Use boot_cpu_data for CPU probe.
sh: Support extended mode TLB on SH-X3.
sh: Bump MAX_ACTIVE_REGIONS for SH7785.
...
Diffstat (limited to 'arch/sh/kernel/signal.c')
-rw-r--r-- | arch/sh/kernel/signal.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/sh/kernel/signal.c b/arch/sh/kernel/signal.c index 706d81ccd101..2f42442cf164 100644 --- a/arch/sh/kernel/signal.c +++ b/arch/sh/kernel/signal.c | |||
@@ -507,13 +507,11 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, | |||
507 | ctrl_inw(regs->pc - 4)); | 507 | ctrl_inw(regs->pc - 4)); |
508 | break; | 508 | break; |
509 | } | 509 | } |
510 | #ifdef CONFIG_GUSA | ||
510 | } else { | 511 | } else { |
511 | /* gUSA handling */ | 512 | /* gUSA handling */ |
512 | #ifdef CONFIG_PREEMPT | 513 | preempt_disable(); |
513 | unsigned long flags; | ||
514 | 514 | ||
515 | local_irq_save(flags); | ||
516 | #endif | ||
517 | if (regs->regs[15] >= 0xc0000000) { | 515 | if (regs->regs[15] >= 0xc0000000) { |
518 | int offset = (int)regs->regs[15]; | 516 | int offset = (int)regs->regs[15]; |
519 | 517 | ||
@@ -524,8 +522,8 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, | |||
524 | regs->pc = regs->regs[0] + offset - | 522 | regs->pc = regs->regs[0] + offset - |
525 | instruction_size(ctrl_inw(regs->pc-4)); | 523 | instruction_size(ctrl_inw(regs->pc-4)); |
526 | } | 524 | } |
527 | #ifdef CONFIG_PREEMPT | 525 | |
528 | local_irq_restore(flags); | 526 | preempt_enable_no_resched(); |
529 | #endif | 527 | #endif |
530 | } | 528 | } |
531 | 529 | ||