aboutsummaryrefslogtreecommitdiff
path: root/gdb/w89k-rom.c
blob: 65078ced954c7c415b36e554e8028a01dbb8916b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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);
}