* objdump.c (dump_reloc_set): Append "()" to symbol names which
[deliverable/binutils-gdb.git] / include / opcode / mn10300.h
index e40e1e6e794c9ebe3519f3acee339f6fc53662d5..a47ef48a357d446c131333952e5d6c832c33031a 100644 (file)
@@ -1,5 +1,5 @@
 /* mn10300.h -- Header file for Matsushita 10300 opcode table
-   Copyright 1996 Free Software Foundation, Inc.
+   Copyright 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
    Written by Jeff Law, Cygnus Support
 
 This file is part of GDB, GAS, and the GNU binutils.
@@ -16,13 +16,14 @@ the GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this file; see the file COPYING.  If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 #ifndef MN10300_H
 #define MN10300_H
 
 /* The opcode table is an array of struct mn10300_opcode.  */
 
+#define MN10300_MAX_OPERANDS 8
 struct mn10300_opcode
 {
   /* The opcode name.  */
@@ -38,13 +39,25 @@ struct mn10300_opcode
      match (and are presumably filled in by operands).  */
   unsigned long mask;
 
+  /* A bitmask.  For each operand, nonzero if it must not have the same
+     register specification as all other operands with a nonzero bit in
+     this flag.  ie 0x81 would indicate that operands 7 and 0 must not
+     match.  Note that we count operands from left to right as they appear
+     in the operands specification below.  */
+  unsigned int no_match_operands;
+
   /* The format of this opcode.  */
   unsigned char format;
 
+  /* Bitmask indicating what cpu variants this opcode is available on.
+     We assume mn10300 base opcodes are available everywhere, so we only
+     have to note opcodes which are available on other variants.  */
+  unsigned int machine;
+
   /* An array of operand codes.  Each code is an index into the
      operand table.  They appear in the order which the operands must
      appear in assembly code, and are terminated by a zero.  */
-  unsigned char operands[8];
+  unsigned char operands[MN10300_MAX_OPERANDS];
 };
 
 /* The table itself is sorted by major opcode number, and is otherwise
@@ -54,7 +67,7 @@ extern const struct mn10300_opcode mn10300_opcodes[];
 extern const int mn10300_num_opcodes;
 
 \f
-/* The operands table is an array of struct powerpc_operand.  */
+/* The operands table is an array of struct mn10300_operand.  */
 
 struct mn10300_operand
 {
@@ -89,4 +102,68 @@ extern const struct mn10300_operand mn10300_operands[];
 #define MN10300_OPERAND_PROMOTE 0x40
 
 #define MN10300_OPERAND_PAREN 0x80
+
+#define MN10300_OPERAND_REPEATED 0x100
+
+#define MN10300_OPERAND_EXTENDED 0x200
+
+#define MN10300_OPERAND_SPLIT 0x400
+
+#define MN10300_OPERAND_REG_LIST 0x800
+
+#define MN10300_OPERAND_PCREL 0x1000
+
+#define MN10300_OPERAND_MEMADDR 0x2000
+
+#define MN10300_OPERAND_RELAX 0x4000
+
+#define MN10300_OPERAND_USP 0x8000
+
+#define MN10300_OPERAND_SSP 0x10000
+
+#define MN10300_OPERAND_MSP 0x20000
+
+#define MN10300_OPERAND_PC 0x40000
+
+#define MN10300_OPERAND_EPSW 0x80000
+
+#define MN10300_OPERAND_RREG 0x100000
+
+#define MN10300_OPERAND_XRREG 0x200000
+
+#define MN10300_OPERAND_PLUS 0x400000
+
+#define MN10300_OPERAND_24BIT 0x800000
+
+#define MN10300_OPERAND_FSREG 0x1000000
+
+#define MN10300_OPERAND_FDREG 0x2000000
+
+#define MN10300_OPERAND_FPCR 0x4000000
+
+/* Opcode Formats.  */
+#define FMT_S0 1
+#define FMT_S1 2
+#define FMT_S2 3
+#define FMT_S4 4
+#define FMT_S6 5
+#define FMT_D0 6
+#define FMT_D1 7
+#define FMT_D2 8
+#define FMT_D4 9
+#define FMT_D5 10
+#define FMT_D6 11
+#define FMT_D7 12
+#define FMT_D8 13
+#define FMT_D9 14
+#define FMT_D10 15
+#define FMT_D3 16
+
+/* Variants of the mn10300 which have additional opcodes.  */
+#define MN103 300
+#define AM30  300
+
+#define AM33 330
+#define AM33_2 332
+
 #endif /* MN10300_H */
This page took 0.025061 seconds and 4 git commands to generate.