* gdb.base/a1-selftest.exp: Change initial stepping to know about
[deliverable/binutils-gdb.git] / gdb / op50-rom.c
CommitLineData
50e183a2
RS
1/* Remote target glue for the Oki op50n based eval board.
2
3 Copyright 1988, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
4
5This file is part of GDB.
6
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program; if not, write to the Free Software
19Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
20
e8b73ba7
RS
21#include "defs.h"
22#include "gdbcore.h"
23#include "target.h"
24#include "monitor.h"
25
26void op50n_open();
27e889bf
RS
27void monitor_open();
28
29/*
30 * this array of registers need to match the indexes used by GDB. The
31 * whole reason this exists is cause the various ROM monitors use
32 * different strings than GDB does, and doesn't support all the
33 * registers either. So, typing "info reg sp" becomes a "r30".
34 */
35static char *op50n_regnames[] = {
4e149f91
RS
36 "r0", "r1", "r2", "r3", "r4", "r5", "r6",
37 "r7", "r8", "r9", "r10", "r11", "r12", "r13",
38 "r14", "r15", "r16", "r17", "r18", "r19", "r20",
39 "r21", "r22", "r23", "r24", "r25", "r26", "r27",
40 "r28", "r29", "r30", "r31", "", "p", "",
41 "", "", "", "", "", "", "",
42 "", "", "", "", "", "", "",
43 "", "", "", "", "", "", "", "",
44 "", "", "", "", "", "", "",
45 "", "", "", "", "", "", "", "",
46 "", "", "", "", "", "", "", "",
47 "", "", "", "", "", "", "", "",
48 "", "", "", "", "", "", "", "",
49 "", "", "", "", "", "", "", "",
50 "", "", "", "", "", "", "", "",
51 "", "", "", "", "", "", "", "",
52 "", "", "", "", "", "", "", ""
27e889bf 53};
e8b73ba7
RS
54
55/*
56 * Define the monitor command strings. Since these are passed directly
57 * through to a printf style function, we need can include formatting
58 * strings. We also need a CR or LF on the end.
59 */
60
61struct target_ops op50n_ops = {
62 "op50n",
63 "Oki's debug monitor for the Op50n Eval board",
51d6a954 64
e8b73ba7
RS
65 "Debug on a Oki OP50N eval board.\n\
66Specify the serial device it is connected to (e.g. /dev/ttya).",
67 op50n_open,
68 monitor_close,
b3b8d9bf 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 */
78b459a7 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 op50n_cmds = {
27e889bf 106 1, /* 1 for ASCII, 0 for binary */
44b95869 107 "\003.\n", /* monitor init string */
4e149f91
RS
108 "g %x\n", /* execute or usually GO command */
109 "g\n", /* continue command */
110 "t\n", /* single step */
7804e5bc 111 "b %x\n", /* set a breakpoint */
e6fa5bd6
RS
112 "bx %x\n", /* clear a breakpoint */
113 0, /* 0 for number, 1 for address */
51d6a954
RS
114 {
115 "sx %x %x;.\n", /* set memory */
e6fa5bd6 116 "", /* delimiter */
51d6a954
RS
117 "", /* the result */
118 },
119 {
120 "sx %x\n", /* get memory */
121 ": ", /* delimiter */
122 " ", /* the result */
123 },
124 {
4e149f91
RS
125 "x %s %x\n", /* set a register */
126 "", /* delimiter between registers */
27e889bf
RS
127 "", /* the result */
128 },
129 {
130 "x %s\n", /* get a register */
131 "=", /* delimiter between registers */
f1ca4cbc 132 "", /* the result */
27e889bf 133 },
51d6a954 134 "r 0\n", /* download command */
27e889bf
RS
135 "#", /* monitor command prompt */
136 " ", /* end-of-command delimitor */
137 ".\n", /* optional command terminator */
138 &op50n_ops, /* target operations */
b3b8d9bf
RS
139 "none,srec,default", /* load types */
140 "none", /* load types */
27e889bf 141 op50n_regnames
e8b73ba7
RS
142};
143
144void
145op50n_open(args, from_tty)
146 char *args;
147 int from_tty;
148{
27e889bf 149 target_preopen(from_tty);
e8b73ba7
RS
150 push_target(&op50n_ops);
151 push_monitor (&op50n_cmds);
27e889bf 152 monitor_open (args, "op50n", from_tty);
e8b73ba7
RS
153}
154
155void
156_initialize_op50n ()
157{
158 add_target (&op50n_ops);
27e889bf
RS
159
160 /* this is the default, since it's that's how the board comes up after
161 power cycle. It can then be changed using set remotebaud
162 */
163 baud_rate = 9600;
e8b73ba7 164}
This page took 0.045055 seconds and 4 git commands to generate.