OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [opcodes/] [disassemble.c] - Blame information for rev 1777

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
/* Select disassembly routine for specified architecture.
2
   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
3
   Free Software Foundation, Inc.
4
 
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation; either version 2 of the License, or
8
(at your option) any later version.
9
 
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14
 
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software
17
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
18
 
19
#include "sysdep.h"
20
#include "dis-asm.h"
21
 
22
#ifdef ARCH_all
23
#define ARCH_a29k
24
#define ARCH_alpha
25
#define ARCH_arc
26
#define ARCH_arm
27
#define ARCH_avr
28
#define ARCH_cris
29
#define ARCH_d10v
30
#define ARCH_d30v
31
#define ARCH_dlx
32
#define ARCH_h8300
33
#define ARCH_h8500
34
#define ARCH_hppa
35
#define ARCH_i370
36
#define ARCH_i386
37
#define ARCH_i860
38
#define ARCH_i960
39
#define ARCH_ip2k
40
#define ARCH_ia64
41
#define ARCH_fr30
42
#define ARCH_m32r
43
#define ARCH_m68k
44
#define ARCH_m68hc11
45
#define ARCH_m68hc12
46
#define ARCH_m88k
47
#define ARCH_mcore
48
#define ARCH_mips
49
#define ARCH_mmix
50
#define ARCH_mn10200
51
#define ARCH_mn10300
52
#define ARCH_ns32k
53
#define ARCH_openrisc
54 1183 sfurman
#define ARCH_or16
55 1181 sfurman
#define ARCH_or32
56
#define ARCH_pdp11
57
#define ARCH_pj
58
#define ARCH_powerpc
59
#define ARCH_rs6000
60
#define ARCH_s390
61
#define ARCH_sh
62
#define ARCH_sparc
63
#define ARCH_tic30
64
#define ARCH_tic4x
65
#define ARCH_tic54x
66
#define ARCH_tic80
67
#define ARCH_v850
68
#define ARCH_vax
69
#define ARCH_w65
70
#define ARCH_xstormy16
71
#define ARCH_z8k
72
#define ARCH_frv
73
#define INCLUDE_SHMEDIA
74
#endif
75
 
76
 
77
disassembler_ftype
78
disassembler (abfd)
79
     bfd *abfd;
80
{
81
  enum bfd_architecture a = bfd_get_arch (abfd);
82
  disassembler_ftype disassemble;
83
 
84
  switch (a)
85
    {
86
      /* If you add a case to this table, also add it to the
87
         ARCH_all definition right above this function.  */
88
#ifdef ARCH_a29k
89
    case bfd_arch_a29k:
90
      /* As far as I know we only handle big-endian 29k objects.  */
91
      disassemble = print_insn_big_a29k;
92
      break;
93
#endif
94
#ifdef ARCH_alpha
95
    case bfd_arch_alpha:
96
      disassemble = print_insn_alpha;
97
      break;
98
#endif
99
#ifdef ARCH_arc
100
    case bfd_arch_arc:
101
      {
102
        disassemble = arc_get_disassembler (abfd);
103
        break;
104
      }
105
#endif
106
#ifdef ARCH_arm
107
    case bfd_arch_arm:
108
      if (bfd_big_endian (abfd))
109
        disassemble = print_insn_big_arm;
110
      else
111
        disassemble = print_insn_little_arm;
112
      break;
113
#endif
114
#ifdef ARCH_avr
115
    case bfd_arch_avr:
116
      disassemble = print_insn_avr;
117
      break;
118
#endif
119
#ifdef ARCH_cris
120
    case bfd_arch_cris:
121
      disassemble = cris_get_disassembler (abfd);
122
      break;
123
#endif
124
#ifdef ARCH_d10v
125
    case bfd_arch_d10v:
126
      disassemble = print_insn_d10v;
127
      break;
128
#endif
129
#ifdef ARCH_d30v
130
    case bfd_arch_d30v:
131
      disassemble = print_insn_d30v;
132
      break;
133
#endif
134
#ifdef ARCH_dlx
135
    case bfd_arch_dlx:
136
      /* As far as I know we only handle big-endian DLX objects.  */
137
      disassemble = print_insn_dlx;
138
      break;
139
#endif
140
#ifdef ARCH_h8300
141
    case bfd_arch_h8300:
142
      if (bfd_get_mach(abfd) == bfd_mach_h8300h)
143
        disassemble = print_insn_h8300h;
144
      else if (bfd_get_mach(abfd) == bfd_mach_h8300s)
145
        disassemble = print_insn_h8300s;
146
      else
147
        disassemble = print_insn_h8300;
148
      break;
149
#endif
150
#ifdef ARCH_h8500
151
    case bfd_arch_h8500:
152
      disassemble = print_insn_h8500;
153
      break;
154
#endif
155
#ifdef ARCH_hppa
156
    case bfd_arch_hppa:
157
      disassemble = print_insn_hppa;
158
      break;
159
#endif
160
#ifdef ARCH_i370
161
    case bfd_arch_i370:
162
      disassemble = print_insn_i370;
163
      break;
164
#endif
165
#ifdef ARCH_i386
166
    case bfd_arch_i386:
167
      disassemble = print_insn_i386;
168
      break;
169
#endif
170
#ifdef ARCH_i860
171
    case bfd_arch_i860:
172
      disassemble = print_insn_i860;
173
      break;
174
#endif
175
#ifdef ARCH_i960
176
    case bfd_arch_i960:
177
      disassemble = print_insn_i960;
178
      break;
179
#endif
180
#ifdef ARCH_ia64
181
    case bfd_arch_ia64:
182
      disassemble = print_insn_ia64;
183
      break;
184
#endif
185
#ifdef ARCH_ip2k
186
    case bfd_arch_ip2k:
187
      disassemble = print_insn_ip2k;
188
      break;
189
#endif
190
#ifdef ARCH_fr30
191
    case bfd_arch_fr30:
192
      disassemble = print_insn_fr30;
193
      break;
194
#endif
195
#ifdef ARCH_m32r
196
    case bfd_arch_m32r:
197
      disassemble = print_insn_m32r;
198
      break;
199
#endif
200
#if defined(ARCH_m68hc11) || defined(ARCH_m68hc12)
201
    case bfd_arch_m68hc11:
202
      disassemble = print_insn_m68hc11;
203
      break;
204
    case bfd_arch_m68hc12:
205
      disassemble = print_insn_m68hc12;
206
      break;
207
#endif
208
#ifdef ARCH_m68k
209
    case bfd_arch_m68k:
210
      disassemble = print_insn_m68k;
211
      break;
212
#endif
213
#ifdef ARCH_m88k
214
    case bfd_arch_m88k:
215
      disassemble = print_insn_m88k;
216
      break;
217
#endif
218
#ifdef ARCH_ns32k
219
    case bfd_arch_ns32k:
220
      disassemble = print_insn_ns32k;
221
      break;
222
#endif
223
#ifdef ARCH_mcore
224
    case bfd_arch_mcore:
225
      disassemble = print_insn_mcore;
226
      break;
227
#endif
228
#ifdef ARCH_mips
229
    case bfd_arch_mips:
230
      if (bfd_big_endian (abfd))
231
        disassemble = print_insn_big_mips;
232
      else
233
        disassemble = print_insn_little_mips;
234
      break;
235
#endif
236
#ifdef ARCH_mmix
237
    case bfd_arch_mmix:
238
      disassemble = print_insn_mmix;
239
      break;
240
#endif
241
#ifdef ARCH_mn10200
242
    case bfd_arch_mn10200:
243
      disassemble = print_insn_mn10200;
244
      break;
245
#endif
246
#ifdef ARCH_mn10300
247
    case bfd_arch_mn10300:
248
      disassemble = print_insn_mn10300;
249
      break;
250
#endif
251
#ifdef ARCH_openrisc
252
    case bfd_arch_openrisc:
253
      disassemble = print_insn_openrisc;
254
      break;
255
#endif
256 1183 sfurman
#ifdef ARCH_or16
257
    case bfd_arch_or16:
258
      if (bfd_big_endian (abfd))
259
        disassemble = print_insn_big_or16;
260
      else
261
        disassemble = print_insn_little_or16;
262
      break;
263
#endif
264 1181 sfurman
#ifdef ARCH_or32
265
    case bfd_arch_or32:
266
      if (bfd_big_endian (abfd))
267
        disassemble = print_insn_big_or32;
268
      else
269
        disassemble = print_insn_little_or32;
270
      break;
271
#endif
272
#ifdef ARCH_pdp11
273
    case bfd_arch_pdp11:
274
      disassemble = print_insn_pdp11;
275
      break;
276
#endif
277
#ifdef ARCH_pj
278
    case bfd_arch_pj:
279
      disassemble = print_insn_pj;
280
      break;
281
#endif
282
#ifdef ARCH_powerpc
283
    case bfd_arch_powerpc:
284
      if (bfd_big_endian (abfd))
285
        disassemble = print_insn_big_powerpc;
286
      else
287
        disassemble = print_insn_little_powerpc;
288
      break;
289
#endif
290
#ifdef ARCH_rs6000
291
    case bfd_arch_rs6000:
292
      if (bfd_get_mach (abfd) == bfd_mach_ppc_620)
293
        disassemble = print_insn_big_powerpc;
294
      else
295
        disassemble = print_insn_rs6000;
296
      break;
297
#endif
298
#ifdef ARCH_s390
299
    case bfd_arch_s390:
300
      disassemble = print_insn_s390;
301
      break;
302
#endif
303
#ifdef ARCH_sh
304
    case bfd_arch_sh:
305
      disassemble = print_insn_sh;
306
      break;
307
#endif
308
#ifdef ARCH_sparc
309
    case bfd_arch_sparc:
310
      disassemble = print_insn_sparc;
311
      break;
312
#endif
313
#ifdef ARCH_tic30
314
    case bfd_arch_tic30:
315
      disassemble = print_insn_tic30;
316
      break;
317
#endif
318
#ifdef ARCH_tic4x
319
    case bfd_arch_tic4x:
320
      disassemble = print_insn_tic4x;
321
      break;
322
#endif
323
#ifdef ARCH_tic54x
324
    case bfd_arch_tic54x:
325
      disassemble = print_insn_tic54x;
326
      break;
327
#endif
328
#ifdef ARCH_tic80
329
    case bfd_arch_tic80:
330
      disassemble = print_insn_tic80;
331
      break;
332
#endif
333
#ifdef ARCH_v850
334
    case bfd_arch_v850:
335
      disassemble = print_insn_v850;
336
      break;
337
#endif
338
#ifdef ARCH_w65
339
    case bfd_arch_w65:
340
      disassemble = print_insn_w65;
341
      break;
342
#endif
343
#ifdef ARCH_xstormy16
344
    case bfd_arch_xstormy16:
345
      disassemble = print_insn_xstormy16;
346
      break;
347
#endif
348
#ifdef ARCH_z8k
349
    case bfd_arch_z8k:
350
      if (bfd_get_mach(abfd) == bfd_mach_z8001)
351
        disassemble = print_insn_z8001;
352
      else
353
        disassemble = print_insn_z8002;
354
      break;
355
#endif
356
#ifdef ARCH_vax
357
    case bfd_arch_vax:
358
      disassemble = print_insn_vax;
359
      break;
360
#endif
361
#ifdef ARCH_frv
362
    case bfd_arch_frv:
363
      disassemble = print_insn_frv;
364
      break;
365
#endif
366
    default:
367
      return 0;
368
    }
369
  return disassemble;
370
}
371
 
372
void
373
disassembler_usage (stream)
374
     FILE * stream ATTRIBUTE_UNUSED;
375
{
376
#ifdef ARCH_arm
377
  print_arm_disassembler_options (stream);
378
#endif
379
 
380
  return;
381
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.