lkml.org 
[lkml]   [2005]   [Aug]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[patch 16/16] Add hardware breakpoint support for i386
Date
From

This adds hardware breakpoint support for i386. This is not as well tested as
software breakpoints, but in some minimal testing appears to be functional.

---

linux-2.6.13-trini/arch/i386/kernel/kgdb.c | 49 +++++++++++++++++++++++++
1 files changed, 49 insertions(+)

diff -puN arch/i386/kernel/kgdb.c~i386 arch/i386/kernel/kgdb.c
--- linux-2.6.13/arch/i386/kernel/kgdb.c~i386 2005-08-10 10:53:22.000000000 -0700
+++ linux-2.6.13-trini/arch/i386/kernel/kgdb.c 2005-08-10 10:53:22.000000000 -0700
@@ -184,6 +184,54 @@ void kgdb_correct_hw_break(void)
asm volatile ("movl %0, %%db7\n"::"r" (dr7));
}

+int kgdb_remove_hw_break(unsigned long addr)
+{
+ int i, idx = -1;
+ for (i = 0; i < 4; i++) {
+ if (breakinfo[i].addr == addr && breakinfo[i].enabled) {
+ idx = i;
+ break;
+ }
+ }
+ if (idx == -1)
+ return -1;
+
+ breakinfo[idx].enabled = 0;
+ return 0;
+}
+
+void kgdb_remove_all_hw_break(void)
+{
+ int i;
+
+ for (i = 0; i < 4; i++) {
+ if (breakinfo[i].enabled) {
+ /* Do what? */
+ ;
+ }
+ memset(&breakinfo[i], 0, sizeof(struct hw_breakpoint));
+ }
+}
+
+int kgdb_set_hw_break(unsigned long addr)
+{
+ int i, idx = -1;
+ for (i = 0; i < 4; i++) {
+ if (!breakinfo[i].enabled) {
+ idx = i;
+ break;
+ }
+ }
+ if (idx == -1)
+ return -1;
+
+ breakinfo[idx].enabled = 1;
+ breakinfo[idx].type = 1;
+ breakinfo[idx].len = 1;
+ breakinfo[idx].addr = addr;
+ return 0;
+}
+
void kgdb_disable_hw_debug(struct pt_regs *regs)
{
/* Disable hardware debugging while we are in kgdb */
@@ -298,4 +346,5 @@ int kgdb_arch_init(void)

struct kgdb_arch arch_kgdb_ops = {
.gdb_bpt_instr = {0xcc},
+ .flags = KGDB_HW_BREAKPOINT,
};
_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-08-29 18:32    [W:0.084 / U:10.408 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site