diff options
Diffstat (limited to 'gdb/w89k-rom.c')
-rw-r--r-- | gdb/w89k-rom.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/gdb/w89k-rom.c b/gdb/w89k-rom.c new file mode 100644 index 0000000..65078ce --- /dev/null +++ b/gdb/w89k-rom.c @@ -0,0 +1,95 @@ +#include "defs.h" +#include "gdbcore.h" +#include "target.h" +#include "monitor.h" + +void w89k_open(); +void general_open(); + +/* + * Define the monitor command strings. Since these are passed directly + * through to a printf style function, we need can include formatting + * strings. We also need a CR or LF on the end. + */ + +struct target_ops w89k_ops = { + "w89k", + "WinBond's debug monitor for the W89k Eval board", + "Debug on a WinBond W89K eval board.\n\ +Specify the serial device it is connected to (e.g. /dev/ttya).", + w89k_open, + monitor_close, + 0, + monitor_detach, + monitor_resume, + monitor_wait, + monitor_fetch_register, + monitor_store_register, + monitor_prepare_to_store, + monitor_xfer_inferior_memory, + monitor_files_info, + monitor_insert_breakpoint, + monitor_remove_breakpoint, /* Breakpoints */ + 0, + 0, + 0, + 0, + 0, /* Terminal handling */ + monitor_kill, + monitor_load, /* load */ + 0, /* lookup_symbol */ + monitor_create_inferior, + monitor_mourn_inferior, + 0, /* can_run */ + 0, /* notice_signals */ + process_stratum, + 0, /* next */ + 1, + 1, + 1, + 1, + 1, /* all mem, mem, stack, regs, exec */ + 0, + 0, /* Section pointers */ + OPS_MAGIC, /* Always the last thing */ +}; + +struct monitor_ops w89k_cmds = { + "\r", /* monitor init string */ + "G\r", /* execute or usually GO command */ + "G\r", /* continue command */ + "T\r", /* single step */ + "BP %x\r", /* set a breakpoint */ + "BC %x\r", /* clear a breakpoint */ + "E %x %x\r", /* set memory to a value */ + "D %x\r", /* display memory */ + "", /* prompt memory commands use */ + "R %s %x\r", /* set a register */ + "", /* delimiter between registers */ + "R %s\r", /* read a register */ + "L\r", /* download command */ + "ROM>", /* monitor command prompt */ + "", /* end-of-command delimitor */ + "", /* optional command terminator */ + &w89k_ops /* target operations */ +}; + +void +w89k_open(args, from_tty) + char *args; + int from_tty; +{ + push_target (&w89k_ops); + push_monitor (&w89k_cmds); + general_open (args, "w89k", from_tty); +} + +void +_initialize_w89k () +{ + add_target (&w89k_ops); +} + + + + |