sys/gdb: Support hardware breakpoints
Support the use of hardware breakpoints in the kernel gdb stub. Reviewed by: jhb (earlier version) Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D44354
This commit is contained in:
@@ -267,6 +267,11 @@ gdb_do_qsupported(uint32_t *feat)
|
||||
|
||||
gdb_tx_str(";qXfer:threads:read+");
|
||||
|
||||
#ifdef HAS_HW_BREAKPOINT
|
||||
if ((*feat & GDB_HWBREAK) != 0)
|
||||
gdb_tx_str(";hwbreak+");
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If the debugport is a reliable transport, request No Ack mode from
|
||||
* the server. The server may or may not choose to enter No Ack mode.
|
||||
@@ -648,6 +653,10 @@ gdb_z_insert(void)
|
||||
(vm_size_t)length, KDB_DBG_ACCESS_RW);
|
||||
break;
|
||||
case '1': /* hardware breakpoint */
|
||||
#ifdef HAS_HW_BREAKPOINT
|
||||
error = kdb_cpu_set_breakpoint((vm_offset_t)addr);
|
||||
break;
|
||||
#endif
|
||||
case '0': /* software breakpoint */
|
||||
/* Not implemented. */
|
||||
gdb_tx_empty();
|
||||
@@ -692,6 +701,10 @@ gdb_z_remove(void)
|
||||
(vm_size_t)length);
|
||||
break;
|
||||
case '1': /* hardware breakpoint */
|
||||
#ifdef HAS_HW_BREAKPOINT
|
||||
error = kdb_cpu_clr_breakpoint((vm_offset_t)addr);
|
||||
break;
|
||||
#endif
|
||||
case '0': /* software breakpoint */
|
||||
/* Not implemented. */
|
||||
gdb_tx_empty();
|
||||
|
||||
Reference in New Issue
Block a user