1/* ARC target-dependent stuff. Extension data structures.
2   Copyright 1995, 1997, 2000, 2001, 2005 Free Software Foundation, Inc.
3
4This file is part of GDB.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
19
20#ifndef ARCEXT_H
21#define ARCEXT_H
22
23enum {EXT_INSTRUCTION   = 0,
24      EXT_CORE_REGISTER = 1,
25      EXT_AUX_REGISTER  = 2,
26      EXT_COND_CODE     = 3};
27
28enum {NUM_EXT_INST = (0x1f-0x10+1) + (0x3f-0x09+1)};
29enum {NUM_EXT_CORE = 59-32+1};
30enum {NUM_EXT_COND = 0x1f-0x10+1};
31
32struct ExtInstruction
33{
34  char flags;
35  char *name;
36};
37
38struct ExtAuxRegister
39{
40  long address;
41  char *name;
42  struct ExtAuxRegister *next;
43};
44
45struct arcExtMap
46{
47  struct ExtAuxRegister *auxRegisters;
48  struct ExtInstruction *instructions[NUM_EXT_INST];
49  char *coreRegisters[NUM_EXT_CORE];
50  char *condCodes[NUM_EXT_COND];
51};
52
53extern int arcExtMap_add(void*, unsigned long);
54extern const char *arcExtMap_coreRegName(int);
55extern const char *arcExtMap_auxRegName(long);
56extern const char *arcExtMap_condCodeName(int);
57extern const char *arcExtMap_instName(int, int, int*);
58extern void build_ARC_extmap(bfd *);
59
60#define IGNORE_FIRST_OPD 1
61
62#endif
63