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+");
|
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
|
* 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.
|
* 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);
|
(vm_size_t)length, KDB_DBG_ACCESS_RW);
|
||||||
break;
|
break;
|
||||||
case '1': /* hardware breakpoint */
|
case '1': /* hardware breakpoint */
|
||||||
|
#ifdef HAS_HW_BREAKPOINT
|
||||||
|
error = kdb_cpu_set_breakpoint((vm_offset_t)addr);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case '0': /* software breakpoint */
|
case '0': /* software breakpoint */
|
||||||
/* Not implemented. */
|
/* Not implemented. */
|
||||||
gdb_tx_empty();
|
gdb_tx_empty();
|
||||||
@@ -692,6 +701,10 @@ gdb_z_remove(void)
|
|||||||
(vm_size_t)length);
|
(vm_size_t)length);
|
||||||
break;
|
break;
|
||||||
case '1': /* hardware breakpoint */
|
case '1': /* hardware breakpoint */
|
||||||
|
#ifdef HAS_HW_BREAKPOINT
|
||||||
|
error = kdb_cpu_clr_breakpoint((vm_offset_t)addr);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case '0': /* software breakpoint */
|
case '0': /* software breakpoint */
|
||||||
/* Not implemented. */
|
/* Not implemented. */
|
||||||
gdb_tx_empty();
|
gdb_tx_empty();
|
||||||
|
|||||||
Reference in New Issue
Block a user