]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - include/xtensa-isa.h
Avoid crash in dwarf2_init_complex_target_type
[thirdparty/binutils-gdb.git] / include / xtensa-isa.h
index 5c22902ee13cbec606c74dba4a7c6e860cca7e46..5fd1e236082944b4f7a5c18638bc2b2f60d23bfc 100644 (file)
@@ -1,11 +1,11 @@
 /* Interface definition for configurable Xtensa ISA support.
-   Copyright 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003-2019 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
    This program 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 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -15,7 +15,8 @@
 
    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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, 
+   USA.  */
 
 #ifndef XTENSA_LIBISA_H
 #define XTENSA_LIBISA_H
@@ -24,9 +25,6 @@
 extern "C" {
 #endif
 
-/* Use the statically-linked version for the GNU tools.  */
-#define STATIC_LIBISA 1
-
 /* Version number: This is intended to help support code that works with
    versions of this library from multiple Xtensa releases.  */
 
@@ -65,7 +63,7 @@ extern "C" {
 typedef struct xtensa_isa_opaque { int unused; } *xtensa_isa;
 
 
-/* Opcodes, formats, regfiles, states, sysregs, ctypes, and protos are
+/* Most of the Xtensa ISA entities (e.g., opcodes, regfiles, etc.) are
    represented here using sequential integers beginning with 0.  The
    specific values are only fixed for a particular instantiation of an
    xtensa_isa structure, so these values should only be used
@@ -137,8 +135,8 @@ typedef int xtensa_funcUnit;
    retrieved with the "errno" function.  For any result other than
    xtensa_isa_ok, an error message containing additional information
    about the problem can be retrieved using the "error_msg" function.
-   The error messages are stored in an internal buffer, which should not
-   should be freed and may be overwritten by subsequent operations.  */
+   The error messages are stored in an internal buffer, which should
+   not be freed and may be overwritten by subsequent operations.  */
 
 typedef enum xtensa_isa_status_enum
 {
@@ -168,6 +166,7 @@ xtensa_isa_errno (xtensa_isa isa);
 extern char *
 xtensa_isa_error_msg (xtensa_isa isa);
 
+
 \f
 /* Instruction buffers.  */
 
@@ -215,6 +214,7 @@ extern void
 xtensa_insnbuf_from_chars (xtensa_isa isa, xtensa_insnbuf insn,
                           const unsigned char *cp, int num_chars);
 
+
 \f
 /* ISA information.  */
 
@@ -279,6 +279,7 @@ xtensa_isa_num_interfaces (xtensa_isa isa);
 extern int
 xtensa_isa_num_funcUnits (xtensa_isa isa);
 
+
 \f
 /* Instruction formats.  */
 
@@ -342,6 +343,7 @@ extern int
 xtensa_format_set_slot (xtensa_isa isa, xtensa_format fmt, int slot,
                        xtensa_insnbuf insn, const xtensa_insnbuf slotbuf);
 
+
 \f
 /* Opcode information.  */
 
@@ -412,7 +414,6 @@ xtensa_opcode_is_call (xtensa_isa isa, xtensa_opcode opc);
 extern int
 xtensa_opcode_num_operands (xtensa_isa isa, xtensa_opcode opc);
 
-
 extern int
 xtensa_opcode_num_stateOperands (xtensa_isa isa, xtensa_opcode opc);
 
@@ -438,6 +439,7 @@ xtensa_opcode_num_funcUnit_uses (xtensa_isa isa, xtensa_opcode opc);
 extern xtensa_funcUnit_use *
 xtensa_opcode_funcUnit_use (xtensa_isa isa, xtensa_opcode opc, int u);
 
+
 \f
 /* Operand information.  */
 
@@ -572,6 +574,7 @@ extern int
 xtensa_operand_undo_reloc (xtensa_isa isa, xtensa_opcode opc, int opnd,
                           uint32 *valp, uint32 pc);
 
+
 \f
 /* State Operands.  */
 
@@ -588,6 +591,7 @@ xtensa_stateOperand_state (xtensa_isa isa, xtensa_opcode opc, int stOp);
 extern char
 xtensa_stateOperand_inout (xtensa_isa isa, xtensa_opcode opc, int stOp);
 
+
 \f
 /* Interface Operands.  */
 
@@ -598,6 +602,7 @@ extern xtensa_interface
 xtensa_interfaceOperand_interface (xtensa_isa isa, xtensa_opcode opc,
                                   int ifOp);
 
+
 \f
 /* Register Files.  */
 
@@ -651,6 +656,7 @@ xtensa_regfile_num_bits (xtensa_isa isa, xtensa_regfile rf);
 extern int
 xtensa_regfile_num_entries (xtensa_isa isa, xtensa_regfile rf);
 
+
 \f
 /* Processor States.  */
 
@@ -680,6 +686,14 @@ xtensa_state_num_bits (xtensa_isa isa, xtensa_state st);
 extern int
 xtensa_state_is_exported (xtensa_isa isa, xtensa_state st);
 
+
+/* Check for a "shared_or" state.  Returns 0 if the condition is false,
+   1 if the condition is true, and XTENSA_UNDEFINED on error.  */
+
+extern int
+xtensa_state_is_shared_or (xtensa_isa isa, xtensa_state st);
+
+
 \f
 /* Sysregs ("special registers" and "user registers").  */
 
@@ -717,6 +731,7 @@ xtensa_sysreg_number (xtensa_isa isa, xtensa_sysreg sysreg);
 extern int
 xtensa_sysreg_is_user (xtensa_isa isa, xtensa_sysreg sysreg);
 
+
 \f
 /* Interfaces.  */
 
@@ -768,6 +783,7 @@ xtensa_interface_has_side_effect (xtensa_isa isa, xtensa_interface intf);
 extern int
 xtensa_interface_class_id (xtensa_isa isa, xtensa_interface intf);
 
+
 \f
 /* Functional Units.  */