summaryrefslogtreecommitdiff
path: root/arch/blackfin/kernel/signal.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-05-09 10:34:00 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-09 10:34:00 -0700
commit3ed43c745d2ce0c4ca15ad406285d1cc7e8ceec3 (patch)
tree286decf836edc60ef70a0306a785ed497f7fed73 /arch/blackfin/kernel/signal.c
parent26c5e98e88a6126adef2ddce21899e5afe823a2b (diff)
parent45828b812ddb608ddf83eff11601f62b726d13ab (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (21 commits) Blackfin Serial Driver: abstract away DLAB differences into header Blackfin Serial Driver: macro away the IER differences between processors [Blackfin] arch: remove useless IRQ_SW_INT defines [Blackfin] arch: protect linux/usb/musb.h include until the driver gets mainlined [Blackfin] arch: protect linux/usb/isp1362.h include until the driver gets mainlined [Blackfin] arch: add EBIU supporting for BF54x EZKIT SMSC LAN911x/LAN921x families embedded ethernet driver [Blackfin] arch: Set spi flash partition on bf527 as like bf548. [Blackfin] arch: fix bug - Remove module will not free L1 memory used [Blackfin] arch: fix wrong header name in comment [Blackfin] arch: Fix BUG - spi flash on bf527 ezkit would fail at mount [Blackfin] arch: add twi_lcd and twi_keypad i2c board info to bf527-ezkit [Blackfin] arch: Add physmap partition for BF527-EZkit [Blackfin] arch: fix gdb testing regression [Blackfin] arch: disable single stepping when delivering a signal [Blackfin] arch: Delete unused (copied from m68k) entries in asm-offsets.c. [Blackfin] arch: In the double fault handler, set up the PT_RETI slot [Blackfin] arch: Support for CPU_FREQ and NOHZ [Blackfin] arch: Functional power management support: Add CPU and platform voltage scaling support [Blackfin] arch: fix bug - breaking the atomic sections code. [Blackfin] arch: Equalize include files: Add VR_CTL masks ...
Diffstat (limited to 'arch/blackfin/kernel/signal.c')
-rw-r--r--arch/blackfin/kernel/signal.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/signal.c b/arch/blackfin/kernel/signal.c
index cb9d883d493c..dbc3bbf846be 100644
--- a/arch/blackfin/kernel/signal.c
+++ b/arch/blackfin/kernel/signal.c
@@ -42,6 +42,9 @@
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
+/* Location of the trace bit in SYSCFG. */
+#define TRACE_BITS 0x0001
+
struct fdpic_func_descriptor {
unsigned long text;
unsigned long GOT;
@@ -225,6 +228,16 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t * info,
regs->r1 = (unsigned long)(&frame->info);
regs->r2 = (unsigned long)(&frame->uc);
+ /*
+ * Clear the trace flag when entering the signal handler, but
+ * notify any tracer that was single-stepping it. The tracer
+ * may want to single-step inside the handler too.
+ */
+ if (regs->syscfg & TRACE_BITS) {
+ regs->syscfg &= ~TRACE_BITS;
+ ptrace_notify(SIGTRAP);
+ }
+
return 0;
give_sigsegv: