185815Sobrien/* ARC target-dependent stuff. Extension data structures.
2218822Sdim   Copyright 1995, 1997, 2000, 2001, 2005 Free Software Foundation, Inc.
385815Sobrien
485815SobrienThis file is part of GDB.
585815Sobrien
685815SobrienThis program is free software; you can redistribute it and/or modify
785815Sobrienit under the terms of the GNU General Public License as published by
885815Sobrienthe Free Software Foundation; either version 2 of the License, or
985815Sobrien(at your option) any later version.
1085815Sobrien
1185815SobrienThis program is distributed in the hope that it will be useful,
1285815Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of
1385815SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1485815SobrienGNU General Public License for more details.
1585815Sobrien
1685815SobrienYou should have received a copy of the GNU General Public License
1785815Sobrienalong with this program; if not, write to the Free Software
18218822SdimFoundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
1985815Sobrien
2085815Sobrien#ifndef ARCEXT_H
2185815Sobrien#define ARCEXT_H
2285815Sobrien
23218822Sdimenum {EXT_INSTRUCTION   = 0,
24218822Sdim      EXT_CORE_REGISTER = 1,
25218822Sdim      EXT_AUX_REGISTER  = 2,
26218822Sdim      EXT_COND_CODE     = 3};
2785815Sobrien
2885815Sobrienenum {NUM_EXT_INST = (0x1f-0x10+1) + (0x3f-0x09+1)};
2985815Sobrienenum {NUM_EXT_CORE = 59-32+1};
3085815Sobrienenum {NUM_EXT_COND = 0x1f-0x10+1};
3185815Sobrien
3285815Sobrienstruct ExtInstruction
3385815Sobrien{
3485815Sobrien  char flags;
3585815Sobrien  char *name;
3685815Sobrien};
3785815Sobrien
3885815Sobrienstruct ExtAuxRegister
3985815Sobrien{
4085815Sobrien  long address;
4185815Sobrien  char *name;
4285815Sobrien  struct ExtAuxRegister *next;
4385815Sobrien};
4485815Sobrien
4585815Sobrienstruct arcExtMap
4685815Sobrien{
4785815Sobrien  struct ExtAuxRegister *auxRegisters;
4885815Sobrien  struct ExtInstruction *instructions[NUM_EXT_INST];
49218822Sdim  char *coreRegisters[NUM_EXT_CORE];
50218822Sdim  char *condCodes[NUM_EXT_COND];
5185815Sobrien};
5285815Sobrien
5385815Sobrienextern int arcExtMap_add(void*, unsigned long);
5485815Sobrienextern const char *arcExtMap_coreRegName(int);
5585815Sobrienextern const char *arcExtMap_auxRegName(long);
5685815Sobrienextern const char *arcExtMap_condCodeName(int);
5785815Sobrienextern const char *arcExtMap_instName(int, int, int*);
5885815Sobrienextern void build_ARC_extmap(bfd *);
5985815Sobrien
6085815Sobrien#define IGNORE_FIRST_OPD 1
6185815Sobrien
6285815Sobrien#endif
63