X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=simavr%2Fsim%2Fsim_gdb.h;h=225291bb0bb738eef20dd2d41e6a4e6123f89def;hb=dc3747065c3e00715808918b54337d99abba6fc3;hp=49a5645d0edba86b78248aecb6468fae93c2d51f;hpb=1898613e4ff3926250bc98e9917fc57b078f48f0;p=simavr diff --git a/simavr/sim/sim_gdb.h b/simavr/sim/sim_gdb.h index 49a5645..225291b 100644 --- a/simavr/sim/sim_gdb.h +++ b/simavr/sim/sim_gdb.h @@ -22,9 +22,33 @@ #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