core: Deinitialize GDB in avr_terminate()
[simavr] / simavr / sim / sim_gdb.h
index 49a5645..225291b 100644 (file)
 #ifndef __SIM_GDB_H__
 #define __SIM_GDB_H__
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Watchpoint types.
+   See GDB User Manual, Appendix E.2 */
+enum avr_gdb_watch_type {
+       AVR_GDB_BREAK_SOFT   = 1 << 0,
+       AVR_GDB_BREAK_HARD   = 1 << 1,
+
+       AVR_GDB_WATCH_WRITE  = 1 << 2,
+       AVR_GDB_WATCH_READ   = 1 << 3,
+       AVR_GDB_WATCH_ACCESS = AVR_GDB_WATCH_WRITE | AVR_GDB_WATCH_READ,
+};
+
 int avr_gdb_init(avr_t * avr);
 
+void avr_deinit_gdb(avr_t * avr);
+
 // call from the main AVR decoder thread
-int avr_gdb_processor(avr_t * avr, uint32_t sleep);
+int avr_gdb_processor(avr_t * avr, int sleep);
+
+// Called from sim_core.c
+void avr_gdb_handle_watchpoints(avr_t * g, uint16_t addr, enum avr_gdb_watch_type type);
+
+#ifdef __cplusplus
+};
+#endif
 
 #endif