123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /* ARC target-dependent stuff. Extension data structures.
- Copyright (C) 1995-2015 Free Software Foundation, Inc.
- This file is part of libopcodes.
- This library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
- It is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
- /*This header file defines a table of extensions to the ARC processor
- architecture. These extensions are read from the '.arcextmap' or
- '.gnu.linkonce.arcextmap.<type>.<N>' sections in the ELF file which
- is identified by the bfd parameter to the build_ARC_extmap function.
- These extensions may include:
- core registers
- auxiliary registers
- instructions
- condition codes
- Once the table has been constructed, accessor functions may be used
- to retrieve information from it.
- The build_ARC_extmap constructor function build_ARC_extmap may be
- called as many times as required; it will re-initialize the table
- each time. */
- #ifndef ARC_EXTENSIONS_H
- #define ARC_EXTENSIONS_H
- #define IGNORE_FIRST_OPD 1
- /* Define this if we do not want to encode instructions based on the
- ARCompact Programmer's Reference. */
- #define UNMANGLED
- /* This defines the kinds of extensions which may be read from the
- ections in the executable files. */
- enum ExtOperType
- {
- EXT_INSTRUCTION = 0,
- EXT_CORE_REGISTER = 1,
- EXT_AUX_REGISTER = 2,
- EXT_COND_CODE = 3,
- EXT_INSTRUCTION32 = 4,
- EXT_AC_INSTRUCTION = 4,
- EXT_REMOVE_CORE_REG = 5,
- EXT_LONG_CORE_REGISTER = 6,
- EXT_AUX_REGISTER_EXTENDED = 7,
- EXT_INSTRUCTION32_EXTENDED = 8,
- EXT_CORE_REGISTER_CLASS = 9
- };
- enum ExtReadWrite
- {
- REG_INVALID,
- REG_READ,
- REG_WRITE,
- REG_READWRITE
- };
- /* Constructor function. */
- extern void build_ARC_extmap (bfd *);
- /* Accessor functions. */
- extern enum ExtReadWrite arcExtMap_coreReadWrite (int);
- extern const char * arcExtMap_coreRegName (int);
- extern const char * arcExtMap_auxRegName (long);
- extern const char * arcExtMap_condCodeName (int);
- extern const char * arcExtMap_instName (int, int, int *);
- /* Dump function (for debugging). */
- extern void dump_ARC_extmap (void);
- #endif /* ARC_EXTENSIONS_H */
|