X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=simavr%2Fsim%2Fsim_gdb.h;h=2c672c3ad6a867b9ff1c5488ecfda94adeef127a;hb=909198fa8bd460772d3729a85444333ab4ef38d7;hp=cbd4ed1e15afbb5dff9d25a23b25d4ed5a83c5ab;hpb=24c5c6069017010fd7d27eda7585e38b5fff7a4b;p=simavr diff --git a/simavr/sim/sim_gdb.h b/simavr/sim/sim_gdb.h index cbd4ed1..2c672c3 100644 --- a/simavr/sim/sim_gdb.h +++ b/simavr/sim/sim_gdb.h @@ -22,9 +22,31 @@ #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); // call from the main AVR decoder thread -void avr_gdb_processor(avr_t * avr); +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