From: David Daney <ddaney@avtrex.com>
To: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Subject: [Patch 4/6] MIPS: Watch exception handling for HARDWARE_WATCHPOINTS.
Date: Thu, 28 Aug 2008 15:07:37 -0700 [thread overview]
Message-ID: <48B721A9.4070201@avtrex.com> (raw)
In-Reply-To: <48B71ADD.601@avtrex.com>
Here we hook up the watch exception handler so that it sends SIGTRAP
when the hardware watch registers are triggered.
Signed-off-by: David Daney <ddaney@avtrex.com>
---
arch/mips/kernel/genex.S | 4 ++++
arch/mips/kernel/traps.c | 14 +++++++++-----
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S
index c6ada98..15a9bde 100644
--- a/arch/mips/kernel/genex.S
+++ b/arch/mips/kernel/genex.S
@@ -416,7 +416,11 @@ NESTED(nmi_handler, PT_SIZE, sp)
BUILD_HANDLER tr tr sti silent /* #13 */
BUILD_HANDLER fpe fpe fpe silent /* #15 */
BUILD_HANDLER mdmx mdmx sti silent /* #22 */
+#ifdef CONFIG_HARDWARE_WATCHPOINTS
+ BUILD_HANDLER watch watch sti silent /* #23 */
+#else
BUILD_HANDLER watch watch sti verbose /* #23 */
+#endif
BUILD_HANDLER mcheck mcheck cli verbose /* #24 */
BUILD_HANDLER mt mt sti silent /* #25 */
BUILD_HANDLER dsp dsp sti silent /* #26 */
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 6bee290..5fbf591 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -42,6 +42,7 @@
#include <asm/tlbdebug.h>
#include <asm/traps.h>
#include <asm/uaccess.h>
+#include <asm/watch.h>
#include <asm/mmu_context.h>
#include <asm/types.h>
#include <asm/stacktrace.h>
@@ -908,12 +909,15 @@ asmlinkage void do_mdmx(struct pt_regs *regs)
asmlinkage void do_watch(struct pt_regs *regs)
{
/*
- * We use the watch exception where available to detect stack
- * overflows.
+ * If the current thread has the watch registers loaded, save
+ * their values and send SIGTRAP. Otherwise another thread
+ * left the registers set, clear them and continue.
*/
- dump_tlb_all();
- show_regs(regs);
- panic("Caught WATCH exception - probably caused by stack overflow.");
+ if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) {
+ mips_read_watch_registers();
+ force_sig(SIGTRAP, current);
+ } else
+ mips_clear_watch_registers();
}
asmlinkage void do_mcheck(struct pt_regs *regs)
--
1.5.5.1
next prev parent reply other threads:[~2008-08-28 22:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-28 21:38 [Patch 0/6] MIPS: Hardware watch register support for gdb (version 3) David Daney
2008-08-28 21:45 ` Patch [1/6] MIPS: Add HARDWARE_WATCHPOINTS configure option David Daney
2008-08-28 21:55 ` [Patch 2/6] MIPS: Add HARDWARE_WATCHPOINTS definitions and support code David Daney
2008-08-28 22:02 ` [Patch 3/6] MIPS: Probe watch registers and report configuration David Daney
2008-08-28 22:07 ` David Daney [this message]
2008-08-28 22:11 ` [Patch 5/6] MIPS: Scheduler support for HARDWARE_WATCHPOINTS David Daney
2008-08-28 22:25 ` [Patch 6/6] MIPS: Ptrace " David Daney
2008-08-30 8:37 ` [Patch 0/6] MIPS: Hardware watch register support for gdb (version 3) David Daney
-- strict thread matches above, loose matches on Subject: below --
2008-09-11 5:34 [Patch 0/6] MIPS: Hardware watch register support for gdb (version 4) David Daney
2008-09-11 5:59 ` [Patch 4/6] MIPS: Watch exception handling for HARDWARE_WATCHPOINTS David Daney
2008-09-23 7:02 Patch 0/6] MIPS: Hardware watch register support for gdb (version 5) David Daney
2008-09-23 7:08 ` [Patch 4/6] MIPS: Watch exception handling for HARDWARE_WATCHPOINTS David Daney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48B721A9.4070201@avtrex.com \
--to=ddaney@avtrex.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.