2 * op50n-rom.c -- configure GDB for an Oki op59n eval board.
13 * this array of registers need to match the indexes used by GDB. The
14 * whole reason this exists is cause the various ROM monitors use
15 * different strings than GDB does, and doesn't support all the
16 * registers either. So, typing "info reg sp" becomes a "r30".
18 static char *op50n_regnames
[] = {
19 "r0", "r1", "r2", "r3", "r4", "r5", "r6",
20 "r7", "r8", "r9", "r10", "r11", "r12", "r13",
21 "r14", "r15", "r16", "r17", "r18", "r19", "r20",
22 "r21", "r22", "r23", "r24", "r25", "r26", "r27",
23 "r28", "r29", "r30", "r31", "", "p", "",
24 "", "", "", "", "", "", "",
25 "", "", "", "", "", "", "",
26 "", "", "", "", "", "", "", "",
27 "", "", "", "", "", "", "",
28 "", "", "", "", "", "", "", "",
29 "", "", "", "", "", "", "", "",
30 "", "", "", "", "", "", "", "",
31 "", "", "", "", "", "", "", "",
32 "", "", "", "", "", "", "", "",
33 "", "", "", "", "", "", "", "",
34 "", "", "", "", "", "", "", "",
35 "", "", "", "", "", "", "", ""
39 * Define the monitor command strings. Since these are passed directly
40 * through to a printf style function, we need can include formatting
41 * strings. We also need a CR or LF on the end.
44 struct target_ops op50n_ops
= {
46 "Oki's debug monitor for the Op50n Eval board",
48 "Debug on a Oki OP50N eval board.\n\
49 Specify the serial device it is connected to (e.g. /dev/ttya).",
57 monitor_fetch_register
,
58 monitor_store_register
,
59 monitor_prepare_to_store
,
60 monitor_xfer_inferior_memory
,
62 monitor_insert_breakpoint
,
63 monitor_remove_breakpoint
, /* Breakpoints */
68 0, /* Terminal handling */
70 monitor_load
, /* load */
71 0, /* lookup_symbol */
72 monitor_create_inferior
,
73 monitor_mourn_inferior
,
75 0, /* notice_signals */
83 1, /* all mem, mem, stack, regs, exec */
85 0, /* Section pointers */
86 OPS_MAGIC
, /* Always the last thing */
89 struct monitor_ops op50n_cmds
= {
90 1, /* 1 for ASCII, 0 for binary */
91 "\003.\n", /* monitor init string */
92 "g %x\n", /* execute or usually GO command */
93 "g\n", /* continue command */
94 "t\n", /* single step */
95 "b %x\n", /* set a breakpoint */
96 "bx %x\n", /* clear a breakpoint */
97 0, /* 0 for number, 1 for address */
99 "sx %x %x;.\n", /* set memory */
104 "sx %x\n", /* get memory */
105 ": ", /* delimiter */
106 " ", /* the result */
109 "x %s %x\n", /* set a register */
110 "", /* delimiter between registers */
114 "x %s\n", /* get a register */
115 "=", /* delimiter between registers */
118 "r 0\n", /* download command */
119 "#", /* monitor command prompt */
120 " ", /* end-of-command delimitor */
121 ".\n", /* optional command terminator */
122 &op50n_ops
, /* target operations */
123 "srec,ascii-srec,default", /* load types */
128 op50n_open(args
, from_tty
)
132 target_preopen(from_tty
);
133 push_target(&op50n_ops
);
134 push_monitor (&op50n_cmds
);
135 monitor_open (args
, "op50n", from_tty
);
141 add_target (&op50n_ops
);
143 /* this is the default, since it's that's how the board comes up after
144 power cycle. It can then be changed using set remotebaud