* monitor.[ch], op50-rom.c, rom68k-rom.c, w89k-rom.c: Add support
[deliverable/binutils-gdb.git] / gdb / w89k-rom.c
CommitLineData
50e183a2
RS
1/* Remote target glue for the WinBond ROM monitor running on the "Cougar"
2W89k eval board.
3
50e183a2
RS
4 Copyright 1988, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
5
6This file is part of GDB.
7
8This program is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program; if not, write to the Free Software
20Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
21
e8b73ba7
RS
22#include "defs.h"
23#include "gdbcore.h"
24#include "target.h"
25#include "monitor.h"
26
27e889bf
RS
27extern int baud_rate;
28
e8b73ba7 29void w89k_open();
27e889bf
RS
30void monitor_open();
31
32/*
33 * this array of registers need to match the indexes used by GDB. The
34 * whole reason this exists is cause the various ROM monitors use
35 * different strings than GDB does, and doesn't support all the
36 * registers either. So, typing "info reg sp" becomes a "r30".
37 */
38static char *w89k_regnames[] = {
39 "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
40 "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19",
41 "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29",
7804e5bc 42 "r30", "r31", "sar", "pc", "", "", "",
27e889bf
RS
43 "eiem", "iir", "iva", "ior", "ipsw","", "", "", "", "",
44 "", "", "", "", "", "", "", "ccr", "", "",
45 "tr0", "tr1", "", "", "", "", "",
46 "", "", "", "", "", "", "", "",
47 "", "", "", "", "", "", "", "",
48 "", "", "", "", "", "", "", "",
49 "", "", "", "", "", "", "", "",
50 "", "", "", "", "", "", "", "",
51 "", "", "", "", "", "", "", "",
52 "", "", "", "", "", "", "", "",
53 "", "", "", "", "", "", "", ""
54};
e8b73ba7
RS
55
56/*
57 * Define the monitor command strings. Since these are passed directly
58 * through to a printf style function, we need can include formatting
59 * strings. We also need a CR or LF on the end.
60 */
61
62struct target_ops w89k_ops = {
63 "w89k",
64 "WinBond's debug monitor for the W89k Eval board",
65 "Debug on a WinBond W89K eval board.\n\
66Specify the serial device it is connected to (e.g. /dev/ttya).",
67 w89k_open,
68 monitor_close,
7804e5bc 69 monitor_attach,
e8b73ba7
RS
70 monitor_detach,
71 monitor_resume,
72 monitor_wait,
73 monitor_fetch_register,
74 monitor_store_register,
75 monitor_prepare_to_store,
76 monitor_xfer_inferior_memory,
77 monitor_files_info,
78 monitor_insert_breakpoint,
79 monitor_remove_breakpoint, /* Breakpoints */
80 0,
81 0,
82 0,
83 0,
84 0, /* Terminal handling */
85 monitor_kill,
86 monitor_load, /* load */
87 0, /* lookup_symbol */
88 monitor_create_inferior,
89 monitor_mourn_inferior,
90 0, /* can_run */
91 0, /* notice_signals */
6c27841f 92 0, /* to_stop */
e8b73ba7
RS
93 process_stratum,
94 0, /* next */
95 1,
96 1,
97 1,
98 1,
99 1, /* all mem, mem, stack, regs, exec */
100 0,
101 0, /* Section pointers */
102 OPS_MAGIC, /* Always the last thing */
103};
104
105struct monitor_ops w89k_cmds = {
27e889bf 106 1, /* 1 for ASCII, 0 for binary */
7804e5bc 107 "\n", /* monitor init string */
e6fa5bd6 108 "g = %x\n", /* execute or usually GO command */
7804e5bc
RS
109 "g\n", /* continue command */
110 "t\n", /* single step */
111 "bp %x\n", /* set a breakpoint */
112 "bc %x\n", /* clear a breakpoint */
113 0, /* 0 for number, 1 for address */
51d6a954
RS
114 {
115 "e %x %x\n", /* set memory */
116 "", /* delimiter */
117 "", /* the result */
118 },
119 {
120 "db %x %x\n", /* get memory */
121 "", /* delimiter */
122 "", /* the result */
123 },
e6fa5bd6 124 {
51d6a954 125 "r %s %x\n", /* set a register */
27e889bf
RS
126 "", /* delimiter between registers */
127 "", /* the result */
128 },
129 {
e6fa5bd6 130 "r %s\n", /* get a register */
27e889bf
RS
131 "", /* delimiter between registers */
132 "", /* the result */
133 },
50e183a2 134 "u\n", /* download command */
e8b73ba7
RS
135 "ROM>", /* monitor command prompt */
136 "", /* end-of-command delimitor */
7804e5bc 137 "", /* optional command terminator */
27e889bf 138 &w89k_ops, /* target operations */
b3b8d9bf
RS
139 "none,srec,default", /* load types */
140 "none,xmodem", /* load protocols */
cf51c601
RS
141 "9600", /* supported baud rates */
142 1, /* number of stop bits */
27e889bf 143 w89k_regnames /* registers names */
e8b73ba7
RS
144};
145
146void
147w89k_open(args, from_tty)
148 char *args;
149 int from_tty;
150{
27e889bf 151 target_preopen(from_tty);
e8b73ba7
RS
152 push_target (&w89k_ops);
153 push_monitor (&w89k_cmds);
27e889bf 154 monitor_open (args, "w89k", from_tty);
e8b73ba7
RS
155}
156
157void
158_initialize_w89k ()
159{
160 add_target (&w89k_ops);
27e889bf
RS
161
162 /* this is the default, since it's the only baud rate supported by the hardware */
163 baud_rate = 9600;
e8b73ba7 164}
This page took 0.044708 seconds and 4 git commands to generate.