Commit | Line | Data |
---|---|---|
9846de1b JM |
1 | /* OBSOLETE /* Pyramid target-dependent code for GDB. */ |
2 | /* OBSOLETE Copyright (C) 1988, 1989, 1991 Free Software Foundation, Inc. */ | |
3 | /* OBSOLETE */ | |
4 | /* OBSOLETE This file is part of GDB. */ | |
5 | /* OBSOLETE */ | |
6 | /* OBSOLETE This program is free software; you can redistribute it and/or modify */ | |
7 | /* OBSOLETE it under the terms of the GNU General Public License as published by */ | |
8 | /* OBSOLETE the Free Software Foundation; either version 2 of the License, or */ | |
9 | /* OBSOLETE (at your option) any later version. */ | |
10 | /* OBSOLETE */ | |
11 | /* OBSOLETE This program is distributed in the hope that it will be useful, */ | |
12 | /* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */ | |
13 | /* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ | |
14 | /* OBSOLETE GNU General Public License for more details. */ | |
15 | /* OBSOLETE */ | |
16 | /* OBSOLETE You should have received a copy of the GNU General Public License */ | |
17 | /* OBSOLETE along with this program; if not, write to the Free Software */ | |
18 | /* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */ | |
19 | /* OBSOLETE */ | |
20 | /* OBSOLETE #include "defs.h" */ | |
21 | /* OBSOLETE */ | |
22 | /* OBSOLETE /*** Prettier register printing. ***x/ */ | |
23 | /* OBSOLETE */ | |
24 | /* OBSOLETE /* Print registers in the same format as pyramid's dbx, adb, sdb. *x/ */ | |
25 | /* OBSOLETE pyr_print_registers(reg_buf, regnum) */ | |
26 | /* OBSOLETE long *reg_buf[]; */ | |
27 | /* OBSOLETE { */ | |
28 | /* OBSOLETE register int regno; */ | |
29 | /* OBSOLETE int usp, ksp; */ | |
30 | /* OBSOLETE struct user u; */ | |
31 | /* OBSOLETE */ | |
32 | /* OBSOLETE for (regno = 0; regno < 16; regno++) { */ | |
33 | /* OBSOLETE printf_unfiltered/*_filtered*x/ ("%6.6s: %8x %6.6s: %8x %6s: %8x %6s: %8x\n", */ | |
c5aa993b JM |
34 | /* OBSOLETE REGISTER_NAME (regno), reg_buf[regno], */ |
35 | /* OBSOLETE REGISTER_NAME (regno+16), reg_buf[regno+16], */ | |
36 | /* OBSOLETE REGISTER_NAME (regno+32), reg_buf[regno+32], */ | |
37 | /* OBSOLETE REGISTER_NAME (regno+48), reg_buf[regno+48]); */ | |
9846de1b JM |
38 | /* OBSOLETE } */ |
39 | /* OBSOLETE usp = ptrace (3, inferior_pid, */ | |
c5aa993b JM |
40 | /* OBSOLETE (PTRACE_ARG3_TYPE) ((char *)&u.u_pcb.pcb_usp) - */ |
41 | /* OBSOLETE ((char *)&u), 0); */ | |
9846de1b | 42 | /* OBSOLETE ksp = ptrace (3, inferior_pid, */ |
c5aa993b JM |
43 | /* OBSOLETE (PTRACE_ARG3_TYPE) ((char *)&u.u_pcb.pcb_ksp) - */ |
44 | /* OBSOLETE ((char *)&u), 0); */ | |
9846de1b | 45 | /* OBSOLETE printf_unfiltered/*_filtered*x/ ("\n%6.6s: %8x %6.6s: %8x (%08x) %6.6s %8x\n", */ |
c5aa993b JM |
46 | /* OBSOLETE REGISTER_NAME (CSP_REGNUM),reg_buf[CSP_REGNUM], */ |
47 | /* OBSOLETE REGISTER_NAME (KSP_REGNUM), reg_buf[KSP_REGNUM], ksp, */ | |
48 | /* OBSOLETE "usp", usp); */ | |
9846de1b JM |
49 | /* OBSOLETE } */ |
50 | /* OBSOLETE */ | |
51 | /* OBSOLETE /* Print the register regnum, or all registers if regnum is -1. */ | |
52 | /* OBSOLETE fpregs is currently ignored. *x/ */ | |
53 | /* OBSOLETE */ | |
54 | /* OBSOLETE pyr_do_registers_info (regnum, fpregs) */ | |
55 | /* OBSOLETE int regnum; */ | |
56 | /* OBSOLETE int fpregs; */ | |
57 | /* OBSOLETE { */ | |
58 | /* OBSOLETE /* On a pyr, we know a virtual register can always fit in an long. */ | |
59 | /* OBSOLETE Here (and elsewhere) we take advantage of that. Yuk. *x/ */ | |
60 | /* OBSOLETE long raw_regs[MAX_REGISTER_RAW_SIZE*NUM_REGS]; */ | |
61 | /* OBSOLETE register int i; */ | |
62 | /* OBSOLETE */ | |
63 | /* OBSOLETE for (i = 0 ; i < 64 ; i++) { */ | |
64 | /* OBSOLETE read_relative_register_raw_bytes(i, raw_regs+i); */ | |
65 | /* OBSOLETE } */ | |
66 | /* OBSOLETE if (regnum == -1) */ | |
67 | /* OBSOLETE pyr_print_registers (raw_regs, regnum); */ | |
68 | /* OBSOLETE else */ | |
69 | /* OBSOLETE for (i = 0; i < NUM_REGS; i++) */ | |
70 | /* OBSOLETE if (i == regnum) { */ | |
c5aa993b JM |
71 | /* OBSOLETE long val = raw_regs[i]; */ |
72 | /* OBSOLETE */ | |
73 | /* OBSOLETE fputs_filtered (REGISTER_NAME (i), gdb_stdout); */ | |
74 | /* OBSOLETE printf_filtered(":"); */ | |
75 | /* OBSOLETE print_spaces_filtered (6 - strlen (REGISTER_NAME (i)), gdb_stdout); */ | |
76 | /* OBSOLETE if (val == 0) */ | |
77 | /* OBSOLETE printf_filtered ("0"); */ | |
78 | /* OBSOLETE else */ | |
79 | /* OBSOLETE printf_filtered ("%s %d", local_hex_string_custom(val,"08"), val); */ | |
80 | /* OBSOLETE printf_filtered("\n"); */ | |
9846de1b JM |
81 | /* OBSOLETE } */ |
82 | /* OBSOLETE } */ | |
83 | /* OBSOLETE \f */ | |
84 | /* OBSOLETE /*** Debugging editions of various macros from m-pyr.h ****x/ */ | |
85 | /* OBSOLETE */ | |
86 | /* OBSOLETE CORE_ADDR frame_locals_address (frame) */ | |
87 | /* OBSOLETE struct frame_info *frame; */ | |
88 | /* OBSOLETE { */ | |
89 | /* OBSOLETE register int addr = find_saved_register (frame,CFP_REGNUM); */ | |
90 | /* OBSOLETE register int result = read_memory_integer (addr, 4); */ | |
91 | /* OBSOLETE #ifdef PYRAMID_CONTROL_FRAME_DEBUGGING */ | |
92 | /* OBSOLETE fprintf_unfiltered (gdb_stderr, */ | |
c5aa993b JM |
93 | /* OBSOLETE "\t[[..frame_locals:%8x, %s= %x @%x fcfp= %x foo= %x\n\t gr13=%x pr13=%x tr13=%x @%x]]\n", */ |
94 | /* OBSOLETE frame->frame, */ | |
95 | /* OBSOLETE REGISTER_NAME (CFP_REGNUM), */ | |
96 | /* OBSOLETE result, addr, */ | |
97 | /* OBSOLETE frame->frame_cfp, (CFP_REGNUM), */ | |
9846de1b JM |
98 | /* OBSOLETE */ |
99 | /* OBSOLETE */ | |
c5aa993b JM |
100 | /* OBSOLETE read_register(13), read_register(29), read_register(61), */ |
101 | /* OBSOLETE find_saved_register(frame, 61)); */ | |
9846de1b JM |
102 | /* OBSOLETE #endif /* PYRAMID_CONTROL_FRAME_DEBUGGING *x/ */ |
103 | /* OBSOLETE */ | |
104 | /* OBSOLETE /* FIXME: I thought read_register (CFP_REGNUM) should be the right answer; */ | |
105 | /* OBSOLETE or at least CFP_REGNUM relative to FRAME (ie, result). */ | |
106 | /* OBSOLETE There seems to be a bug in the way the innermost frame is set up. *x/ */ | |
107 | /* OBSOLETE */ | |
108 | /* OBSOLETE return ((frame->next) ? result: frame->frame_cfp); */ | |
109 | /* OBSOLETE } */ | |
110 | /* OBSOLETE */ | |
111 | /* OBSOLETE CORE_ADDR frame_args_addr (frame) */ | |
112 | /* OBSOLETE struct frame_info *frame; */ | |
113 | /* OBSOLETE { */ | |
114 | /* OBSOLETE register int addr = find_saved_register (frame,CFP_REGNUM); */ | |
115 | /* OBSOLETE register int result = read_memory_integer (addr, 4); */ | |
116 | /* OBSOLETE */ | |
117 | /* OBSOLETE #ifdef PYRAMID_CONTROL_FRAME_DEBUGGING */ | |
118 | /* OBSOLETE fprintf_unfiltered (gdb_stderr, */ | |
c5aa993b JM |
119 | /* OBSOLETE "\t[[..frame_args:%8x, %s= %x @%x fcfp= %x r_r= %x\n\t gr13=%x pr13=%x tr13=%x @%x]]\n", */ |
120 | /* OBSOLETE frame->frame, */ | |
121 | /* OBSOLETE REGISTER_NAME (CFP_REGNUM), */ | |
122 | /* OBSOLETE result, addr, */ | |
123 | /* OBSOLETE frame->frame_cfp, read_register(CFP_REGNUM), */ | |
124 | /* OBSOLETE */ | |
125 | /* OBSOLETE read_register(13), read_register(29), read_register(61), */ | |
126 | /* OBSOLETE find_saved_register(frame, 61)); */ | |
9846de1b JM |
127 | /* OBSOLETE #endif /* PYRAMID_CONTROL_FRAME_DEBUGGING *x/ */ |
128 | /* OBSOLETE */ | |
129 | /* OBSOLETE /* FIXME: I thought read_register (CFP_REGNUM) should be the right answer; */ | |
130 | /* OBSOLETE or at least CFP_REGNUM relative to FRAME (ie, result). */ | |
131 | /* OBSOLETE There seems to be a bug in the way the innermost frame is set up. *x/ */ | |
132 | /* OBSOLETE return ((frame->next) ? result: frame->frame_cfp); */ | |
133 | /* OBSOLETE } */ | |
134 | /* OBSOLETE */ | |
135 | /* OBSOLETE #include "symtab.h" */ | |
136 | /* OBSOLETE #include "opcode/pyr.h" */ | |
137 | /* OBSOLETE #include "gdbcore.h" */ | |
138 | /* OBSOLETE */ | |
139 | /* OBSOLETE \f */ | |
140 | /* OBSOLETE /* A couple of functions used for debugging frame-handling on */ | |
141 | /* OBSOLETE Pyramids. (The Pyramid-dependent handling of register values for */ | |
142 | /* OBSOLETE windowed registers is known to be buggy.) */ | |
143 | /* OBSOLETE */ | |
144 | /* OBSOLETE When debugging, these functions can supplant the normal definitions of some */ | |
145 | /* OBSOLETE of the macros in tm-pyramid.h The quantity of information produced */ | |
146 | /* OBSOLETE when these functions are used makes the gdb unusable as a */ | |
147 | /* OBSOLETE debugger for user programs. *x/ */ | |
148 | /* OBSOLETE */ | |
149 | /* OBSOLETE extern unsigned pyr_saved_pc(), pyr_frame_chain(); */ | |
150 | /* OBSOLETE */ | |
151 | /* OBSOLETE CORE_ADDR pyr_frame_chain(frame) */ | |
152 | /* OBSOLETE CORE_ADDR frame; */ | |
153 | /* OBSOLETE { */ | |
154 | /* OBSOLETE int foo=frame - CONTROL_STACK_FRAME_SIZE; */ | |
155 | /* OBSOLETE /* printf_unfiltered ("...following chain from %x: got %x\n", frame, foo);*x/ */ | |
156 | /* OBSOLETE return foo; */ | |
157 | /* OBSOLETE } */ | |
158 | /* OBSOLETE */ | |
159 | /* OBSOLETE CORE_ADDR pyr_saved_pc(frame) */ | |
160 | /* OBSOLETE CORE_ADDR frame; */ | |
161 | /* OBSOLETE { */ | |
162 | /* OBSOLETE int foo=0; */ | |
163 | /* OBSOLETE foo = read_memory_integer (((CORE_ADDR)(frame))+60, 4); */ | |
164 | /* OBSOLETE printf_unfiltered ("..reading pc from frame 0x%0x+%d regs: got %0x\n", */ | |
c5aa993b | 165 | /* OBSOLETE frame, 60/4, foo); */ |
9846de1b JM |
166 | /* OBSOLETE return foo; */ |
167 | /* OBSOLETE } */ | |
168 | /* OBSOLETE */ | |
169 | /* OBSOLETE /* Pyramid instructions are never longer than this many bytes. *x/ */ | |
170 | /* OBSOLETE #define MAXLEN 24 */ | |
171 | /* OBSOLETE */ | |
172 | /* OBSOLETE /* Number of elements in the opcode table. *x/ */ | |
173 | /* OBSOLETE /*const*x/ static int nopcodes = (sizeof (pyr_opcodes) / sizeof( pyr_opcodes[0])); */ | |
174 | /* OBSOLETE #define NOPCODES (nopcodes) */ | |
175 | /* OBSOLETE */ | |
176 | /* OBSOLETE /* Let's be byte-independent so we can use this as a cross-assembler. *x/ */ | |
177 | /* OBSOLETE */ | |
178 | /* OBSOLETE #define NEXTLONG(p) \ */ | |
179 | /* OBSOLETE (p += 4, (((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1]) */ | |
180 | /* OBSOLETE \f */ | |
181 | /* OBSOLETE /* Print one instruction at address MEMADDR in debugged memory, */ | |
182 | /* OBSOLETE on STREAM. Returns length of the instruction, in bytes. *x/ */ | |
183 | /* OBSOLETE */ | |
184 | /* OBSOLETE int */ | |
185 | /* OBSOLETE pyr_print_insn (memaddr, stream) */ | |
186 | /* OBSOLETE CORE_ADDR memaddr; */ | |
187 | /* OBSOLETE GDB_FILE *stream; */ | |
188 | /* OBSOLETE { */ | |
189 | /* OBSOLETE unsigned char buffer[MAXLEN]; */ | |
190 | /* OBSOLETE register int i, nargs, insn_size =4; */ | |
191 | /* OBSOLETE register unsigned char *p; */ | |
192 | /* OBSOLETE register char *d; */ | |
193 | /* OBSOLETE register int insn_opcode, operand_mode; */ | |
194 | /* OBSOLETE register int index_multiplier, index_reg_regno, op_1_regno, op_2_regno ; */ | |
c5aa993b JM |
195 | /* OBSOLETE long insn; /* first word of the insn, not broken down. *x/ */ |
196 | /* OBSOLETE pyr_insn_format insn_decode; /* the same, broken out into op{code,erands} *x/ */ | |
9846de1b JM |
197 | /* OBSOLETE long extra_1, extra_2; */ |
198 | /* OBSOLETE */ | |
199 | /* OBSOLETE read_memory (memaddr, buffer, MAXLEN); */ | |
200 | /* OBSOLETE insn_decode = *((pyr_insn_format *) buffer); */ | |
201 | /* OBSOLETE insn = * ((int *) buffer); */ | |
202 | /* OBSOLETE insn_opcode = insn_decode.operator; */ | |
203 | /* OBSOLETE operand_mode = insn_decode.mode; */ | |
204 | /* OBSOLETE index_multiplier = insn_decode.index_scale; */ | |
205 | /* OBSOLETE index_reg_regno = insn_decode.index_reg; */ | |
206 | /* OBSOLETE op_1_regno = insn_decode.operand_1; */ | |
207 | /* OBSOLETE op_2_regno = insn_decode.operand_2; */ | |
208 | /* OBSOLETE */ | |
209 | /* OBSOLETE */ | |
210 | /* OBSOLETE if (*((int *)buffer) == 0x0) { */ | |
211 | /* OBSOLETE /* "halt" looks just like an invalid "jump" to the insn decoder, */ | |
212 | /* OBSOLETE so is dealt with as a special case *x/ */ | |
213 | /* OBSOLETE fprintf_unfiltered (stream, "halt"); */ | |
214 | /* OBSOLETE return (4); */ | |
215 | /* OBSOLETE } */ | |
216 | /* OBSOLETE */ | |
217 | /* OBSOLETE for (i = 0; i < NOPCODES; i++) */ | |
c5aa993b JM |
218 | /* OBSOLETE if (pyr_opcodes[i].datum.code == insn_opcode) */ |
219 | /* OBSOLETE break; */ | |
9846de1b JM |
220 | /* OBSOLETE */ |
221 | /* OBSOLETE if (i == NOPCODES) */ | |
c5aa993b JM |
222 | /* OBSOLETE /* FIXME: Handle unrecognised instructions better. *x/ */ |
223 | /* OBSOLETE fprintf_unfiltered (stream, "???\t#%08x\t(op=%x mode =%x)", */ | |
224 | /* OBSOLETE insn, insn_decode.operator, insn_decode.mode); */ | |
9846de1b JM |
225 | /* OBSOLETE else */ |
226 | /* OBSOLETE { */ | |
227 | /* OBSOLETE /* Print the mnemonic for the instruction. Pyramid insn operands */ | |
228 | /* OBSOLETE are so regular that we can deal with almost all of them */ | |
229 | /* OBSOLETE separately. */ | |
c5aa993b JM |
230 | /* OBSOLETE Unconditional branches are an exception: they are encoded as */ |
231 | /* OBSOLETE conditional branches (branch if false condition, I think) */ | |
232 | /* OBSOLETE with no condition specified. The average user will not be */ | |
233 | /* OBSOLETE aware of this. To maintain their illusion that an */ | |
234 | /* OBSOLETE unconditional branch insn exists, we will have to FIXME to */ | |
235 | /* OBSOLETE treat the insn mnemnonic of all branch instructions here as a */ | |
236 | /* OBSOLETE special case: check the operands of branch insn and print an */ | |
237 | /* OBSOLETE appropriate mnemonic. *x/ */ | |
9846de1b JM |
238 | /* OBSOLETE */ |
239 | /* OBSOLETE fprintf_unfiltered (stream, "%s\t", pyr_opcodes[i].name); */ | |
240 | /* OBSOLETE */ | |
241 | /* OBSOLETE /* Print the operands of the insn (as specified in */ | |
242 | /* OBSOLETE insn.operand_mode). */ | |
243 | /* OBSOLETE Branch operands of branches are a special case: they are a word */ | |
244 | /* OBSOLETE offset, not a byte offset. *x/ */ | |
245 | /* OBSOLETE */ | |
246 | /* OBSOLETE if (insn_decode.operator == 0x01 || insn_decode.operator == 0x02) { */ | |
247 | /* OBSOLETE register int bit_codes=(insn >> 16)&0xf; */ | |
248 | /* OBSOLETE register int i; */ | |
249 | /* OBSOLETE register int displacement = (insn & 0x0000ffff) << 2; */ | |
250 | /* OBSOLETE */ | |
c5aa993b | 251 | /* OBSOLETE static char cc_bit_names[] = "cvzn"; /* z,n,c,v: strange order? *x/ */ |
9846de1b JM |
252 | /* OBSOLETE */ |
253 | /* OBSOLETE /* Is bfc and no bits specified an unconditional branch?*x/ */ | |
254 | /* OBSOLETE for (i=0;i<4;i++) { */ | |
c5aa993b JM |
255 | /* OBSOLETE if ((bit_codes) & 0x1) */ |
256 | /* OBSOLETE fputc_unfiltered (cc_bit_names[i], stream); */ | |
257 | /* OBSOLETE bit_codes >>= 1; */ | |
9846de1b JM |
258 | /* OBSOLETE } */ |
259 | /* OBSOLETE */ | |
260 | /* OBSOLETE fprintf_unfiltered (stream, ",%0x", */ | |
c5aa993b | 261 | /* OBSOLETE displacement + memaddr); */ |
9846de1b JM |
262 | /* OBSOLETE return (insn_size); */ |
263 | /* OBSOLETE } */ | |
264 | /* OBSOLETE */ | |
265 | /* OBSOLETE switch (operand_mode) { */ | |
266 | /* OBSOLETE case 0: */ | |
c5aa993b JM |
267 | /* OBSOLETE fprintf_unfiltered (stream, "%s,%s", */ |
268 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
269 | /* OBSOLETE REGISTER_NAME (op_2_regno)); */ | |
270 | /* OBSOLETE break; */ | |
271 | /* OBSOLETE */ | |
9846de1b | 272 | /* OBSOLETE case 1: */ |
c5aa993b JM |
273 | /* OBSOLETE fprintf_unfiltered (stream, " 0x%0x,%s", */ |
274 | /* OBSOLETE op_1_regno, */ | |
275 | /* OBSOLETE REGISTER_NAME (op_2_regno)); */ | |
276 | /* OBSOLETE break; */ | |
277 | /* OBSOLETE */ | |
9846de1b | 278 | /* OBSOLETE case 2: */ |
c5aa993b JM |
279 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
280 | /* OBSOLETE insn_size += 4; */ | |
281 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
282 | /* OBSOLETE fprintf_unfiltered (stream, " $0x%0x,%s", */ | |
283 | /* OBSOLETE extra_1, */ | |
284 | /* OBSOLETE REGISTER_NAME (op_2_regno)); */ | |
285 | /* OBSOLETE break; */ | |
9846de1b | 286 | /* OBSOLETE case 3: */ |
c5aa993b JM |
287 | /* OBSOLETE fprintf_unfiltered (stream, " (%s),%s", */ |
288 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
289 | /* OBSOLETE REGISTER_NAME (op_2_regno)); */ | |
290 | /* OBSOLETE break; */ | |
291 | /* OBSOLETE */ | |
9846de1b | 292 | /* OBSOLETE case 4: */ |
c5aa993b JM |
293 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
294 | /* OBSOLETE insn_size += 4; */ | |
295 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
296 | /* OBSOLETE fprintf_unfiltered (stream, " 0x%0x(%s),%s", */ | |
297 | /* OBSOLETE extra_1, */ | |
298 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
299 | /* OBSOLETE REGISTER_NAME (op_2_regno)); */ | |
300 | /* OBSOLETE break; */ | |
301 | /* OBSOLETE */ | |
302 | /* OBSOLETE /* S1 destination mode *x/ */ | |
9846de1b | 303 | /* OBSOLETE case 5: */ |
c5aa993b JM |
304 | /* OBSOLETE fprintf_unfiltered (stream, */ |
305 | /* OBSOLETE ((index_reg_regno) ? "%s,(%s)[%s*%1d]" : "%s,(%s)"), */ | |
306 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
307 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
308 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
309 | /* OBSOLETE index_multiplier); */ | |
310 | /* OBSOLETE break; */ | |
311 | /* OBSOLETE */ | |
9846de1b | 312 | /* OBSOLETE case 6: */ |
c5aa993b JM |
313 | /* OBSOLETE fprintf_unfiltered (stream, */ |
314 | /* OBSOLETE ((index_reg_regno) ? " $%#0x,(%s)[%s*%1d]" */ | |
315 | /* OBSOLETE : " $%#0x,(%s)"), */ | |
316 | /* OBSOLETE op_1_regno, */ | |
317 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
318 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
319 | /* OBSOLETE index_multiplier); */ | |
320 | /* OBSOLETE break; */ | |
321 | /* OBSOLETE */ | |
9846de1b | 322 | /* OBSOLETE case 7: */ |
c5aa993b JM |
323 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
324 | /* OBSOLETE insn_size += 4; */ | |
325 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
326 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
327 | /* OBSOLETE ((index_reg_regno) ? " $%#0x,(%s)[%s*%1d]" */ | |
328 | /* OBSOLETE : " $%#0x,(%s)"), */ | |
329 | /* OBSOLETE extra_1, */ | |
330 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
331 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
332 | /* OBSOLETE index_multiplier); */ | |
333 | /* OBSOLETE break; */ | |
334 | /* OBSOLETE */ | |
9846de1b | 335 | /* OBSOLETE case 8: */ |
c5aa993b JM |
336 | /* OBSOLETE fprintf_unfiltered (stream, */ |
337 | /* OBSOLETE ((index_reg_regno) ? " (%s),(%s)[%s*%1d]" : " (%s),(%s)"), */ | |
338 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
339 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
340 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
341 | /* OBSOLETE index_multiplier); */ | |
342 | /* OBSOLETE break; */ | |
343 | /* OBSOLETE */ | |
9846de1b | 344 | /* OBSOLETE case 9: */ |
c5aa993b JM |
345 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
346 | /* OBSOLETE insn_size += 4; */ | |
347 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
348 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
349 | /* OBSOLETE ((index_reg_regno) */ | |
350 | /* OBSOLETE ? "%#0x(%s),(%s)[%s*%1d]" */ | |
351 | /* OBSOLETE : "%#0x(%s),(%s)"), */ | |
352 | /* OBSOLETE extra_1, */ | |
353 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
354 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
355 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
356 | /* OBSOLETE index_multiplier); */ | |
357 | /* OBSOLETE break; */ | |
358 | /* OBSOLETE */ | |
359 | /* OBSOLETE /* S2 destination mode *x/ */ | |
9846de1b | 360 | /* OBSOLETE case 10: */ |
c5aa993b JM |
361 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
362 | /* OBSOLETE insn_size += 4; */ | |
363 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
364 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
365 | /* OBSOLETE ((index_reg_regno) ? "%s,%#0x(%s)[%s*%1d]" : "%s,%#0x(%s)"), */ | |
366 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
367 | /* OBSOLETE extra_1, */ | |
368 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
369 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
370 | /* OBSOLETE index_multiplier); */ | |
371 | /* OBSOLETE break; */ | |
9846de1b | 372 | /* OBSOLETE case 11: */ |
c5aa993b JM |
373 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
374 | /* OBSOLETE insn_size += 4; */ | |
375 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
376 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
377 | /* OBSOLETE ((index_reg_regno) ? */ | |
378 | /* OBSOLETE " $%#0x,%#0x(%s)[%s*%1d]" : " $%#0x,%#0x(%s)"), */ | |
379 | /* OBSOLETE op_1_regno, */ | |
380 | /* OBSOLETE extra_1, */ | |
381 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
382 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
383 | /* OBSOLETE index_multiplier); */ | |
384 | /* OBSOLETE break; */ | |
9846de1b | 385 | /* OBSOLETE case 12: */ |
c5aa993b JM |
386 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
387 | /* OBSOLETE insn_size += 4; */ | |
388 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
389 | /* OBSOLETE read_memory (memaddr+8, buffer, MAXLEN); */ | |
390 | /* OBSOLETE insn_size += 4; */ | |
391 | /* OBSOLETE extra_2 = * ((int *) buffer); */ | |
392 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
393 | /* OBSOLETE ((index_reg_regno) ? */ | |
394 | /* OBSOLETE " $%#0x,%#0x(%s)[%s*%1d]" : " $%#0x,%#0x(%s)"), */ | |
395 | /* OBSOLETE extra_1, */ | |
396 | /* OBSOLETE extra_2, */ | |
397 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
398 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
399 | /* OBSOLETE index_multiplier); */ | |
400 | /* OBSOLETE break; */ | |
401 | /* OBSOLETE */ | |
9846de1b | 402 | /* OBSOLETE case 13: */ |
c5aa993b JM |
403 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
404 | /* OBSOLETE insn_size += 4; */ | |
405 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
406 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
407 | /* OBSOLETE ((index_reg_regno) */ | |
408 | /* OBSOLETE ? " (%s),%#0x(%s)[%s*%1d]" */ | |
409 | /* OBSOLETE : " (%s),%#0x(%s)"), */ | |
410 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
411 | /* OBSOLETE extra_1, */ | |
412 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
413 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
414 | /* OBSOLETE index_multiplier); */ | |
415 | /* OBSOLETE break; */ | |
9846de1b | 416 | /* OBSOLETE case 14: */ |
c5aa993b JM |
417 | /* OBSOLETE read_memory (memaddr+4, buffer, MAXLEN); */ |
418 | /* OBSOLETE insn_size += 4; */ | |
419 | /* OBSOLETE extra_1 = * ((int *) buffer); */ | |
420 | /* OBSOLETE read_memory (memaddr+8, buffer, MAXLEN); */ | |
421 | /* OBSOLETE insn_size += 4; */ | |
422 | /* OBSOLETE extra_2 = * ((int *) buffer); */ | |
423 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
424 | /* OBSOLETE ((index_reg_regno) ? "%#0x(%s),%#0x(%s)[%s*%1d]" */ | |
425 | /* OBSOLETE : "%#0x(%s),%#0x(%s) "), */ | |
426 | /* OBSOLETE extra_1, */ | |
427 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
428 | /* OBSOLETE extra_2, */ | |
429 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
430 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
431 | /* OBSOLETE index_multiplier); */ | |
432 | /* OBSOLETE break; */ | |
433 | /* OBSOLETE */ | |
9846de1b | 434 | /* OBSOLETE default: */ |
c5aa993b JM |
435 | /* OBSOLETE fprintf_unfiltered (stream, */ |
436 | /* OBSOLETE ((index_reg_regno) ? "%s,%s [%s*%1d]" : "%s,%s"), */ | |
437 | /* OBSOLETE REGISTER_NAME (op_1_regno), */ | |
438 | /* OBSOLETE REGISTER_NAME (op_2_regno), */ | |
439 | /* OBSOLETE REGISTER_NAME (index_reg_regno), */ | |
440 | /* OBSOLETE index_multiplier); */ | |
441 | /* OBSOLETE fprintf_unfiltered (stream, */ | |
442 | /* OBSOLETE "\t\t# unknown mode in %08x", */ | |
443 | /* OBSOLETE insn); */ | |
444 | /* OBSOLETE break; */ | |
9846de1b JM |
445 | /* OBSOLETE } /* switch *x/ */ |
446 | /* OBSOLETE } */ | |
447 | /* OBSOLETE */ | |
448 | /* OBSOLETE { */ | |
449 | /* OBSOLETE return insn_size; */ | |
450 | /* OBSOLETE } */ | |
451 | /* OBSOLETE abort (); */ | |
452 | /* OBSOLETE } */ |