summaryrefslogtreecommitdiffstats
path: root/cpukit/libdebugger/rtems-debugger-target.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libdebugger/rtems-debugger-target.h')
-rw-r--r--cpukit/libdebugger/rtems-debugger-target.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/cpukit/libdebugger/rtems-debugger-target.h b/cpukit/libdebugger/rtems-debugger-target.h
index 1e132fb28c..3f6ceac80b 100644
--- a/cpukit/libdebugger/rtems-debugger-target.h
+++ b/cpukit/libdebugger/rtems-debugger-target.h
@@ -49,9 +49,17 @@ extern "C" {
/**
* Target capabilities mask.
*/
-#define RTEMS_DEBUGGER_TARGET_CAP_SWBREAK (1 << 0)
-#define RTEMS_DEBUGGER_TARGET_CAP_HWBREAK (1 << 1)
-#define RTEMS_DEBUGGER_TARGET_CAP_HWWATCH (1 << 2)
+#define RTEMS_DEBUGGER_TARGET_CAP_SWBREAK (1 << 0)
+#define RTEMS_DEBUGGER_TARGET_CAP_HWBREAK (1 << 1)
+#define RTEMS_DEBUGGER_TARGET_CAP_HWWATCH (1 << 2)
+/*
+ * This target capability indicates that the target implementation uses a pure
+ * software break implementation which must not allow breakpoints to be
+ * inserted before the actual switch to the thread, be it in interrupt context
+ * or otherwise. Such implementations must necessarily implement a thread
+ * switch hook and interrupt hooks to handle these situations.
+ */
+#define RTEMS_DEBUGGER_TARGET_CAP_PURE_SWBREAK (1 << 3)
/**
* Types of hardware breakpoints.
@@ -214,6 +222,11 @@ extern int rtems_debugger_target_swbreak_insert(void);
extern int rtems_debugger_target_swbreak_remove(void);
/**
+ * Determine whether a software breakpoint is configured for the given address.
+ */
+extern bool rtems_debugger_target_swbreak_is_configured( uintptr_t addr );
+
+/**
* Insert hardware breakpoints into the hardware.
*/
extern int rtems_debugger_target_hwbreak_insert(void);