X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=include%2Fopcode%2Fmn10300.h;h=16a139bce5d6582728ab5cd07f1d29f8c103c7e3;hb=4469d2be4b56f5500e0cf8024fabf5e013601f7b;hp=4b7fb8a57a463d1751b2f858e97248f00369b474;hpb=fa803dc60f0bf01297674c41d001798e18ade4dc;p=deliverable%2Fbinutils-gdb.git diff --git a/include/opcode/mn10300.h b/include/opcode/mn10300.h index 4b7fb8a57a..16a139bce5 100644 --- a/include/opcode/mn10300.h +++ b/include/opcode/mn10300.h @@ -1,28 +1,30 @@ /* mn10300.h -- Header file for Matsushita 10300 opcode table - Copyright 1996 Free Software Foundation, Inc. + Copyright 1996, 1997, 1998, 1999, 2003, 2010 Free Software Foundation, Inc. Written by Jeff Law, Cygnus Support -This file is part of GDB, GAS, and the GNU binutils. + This file is part of GDB, GAS, and the GNU binutils. -GDB, GAS, and the GNU binutils are free software; you can redistribute -them and/or modify them under the terms of the GNU General Public -License as published by the Free Software Foundation; either version -1, or (at your option) any later version. + GDB, GAS, and the GNU binutils are free software; you can redistribute + them and/or modify them 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. -GDB, GAS, and the GNU binutils are distributed in the hope that they -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. + GDB, GAS, and the GNU binutils are distributed in the hope that they + 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 file; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with this file; see the file COPYING3. If not, write to the Free + 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 +40,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 @@ -104,6 +118,30 @@ extern const struct mn10300_operand mn10300_operands[]; #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 @@ -115,5 +153,18 @@ extern const struct mn10300_operand mn10300_operands[]; #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 */