X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=include%2Fopcode%2Fv850.h;h=436ff3996844d09fd76b90e3e32f4dce730dd4af;hb=081ba1b3c08bce14fac7c6c240734f7bd230f784;hp=58e7450468f53751dc2b0170049a5ea8aeac3227;hpb=b9792954bbfee0edca34f6dab1ed0a5af8347e63;p=deliverable%2Fbinutils-gdb.git diff --git a/include/opcode/v850.h b/include/opcode/v850.h index 58e7450468..436ff39968 100644 --- a/include/opcode/v850.h +++ b/include/opcode/v850.h @@ -1,5 +1,5 @@ /* v850.h -- Header file for NEC V850 opcode table - Copyright 1996 Free Software Foundation, Inc. + Copyright 1996, 1997, 2001, 2003 Free Software Foundation, Inc. Written by J.T. Conklin, Cygnus Support This file is part of GDB, GAS, and the GNU binutils. @@ -16,7 +16,7 @@ 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 V850_H #define V850_H @@ -45,8 +45,22 @@ struct v850_opcode /* Which (if any) operand is a memory operand. */ unsigned int memop; + + /* Target processor(s). A bit field of processors which support + this instruction. Note a bit field is used as some instructions + are available on multiple, different processor types, whereas + other instructions are only available on one specific type. */ + unsigned int processors; }; +/* Values for the processors field in the v850_opcode structure. */ +#define PROCESSOR_V850 (1 << 0) /* Just the V850. */ +#define PROCESSOR_ALL -1 /* Any processor. */ +#define PROCESSOR_V850E (1 << 1) /* Just the V850E. */ +#define PROCESSOR_NOT_V850 (~ PROCESSOR_V850) /* Any processor except the V850. */ +#define PROCESSOR_V850EA (1 << 2) /* Just the V850EA. */ +#define PROCESSOR_V850E1 (1 << 3) /* Just the V850E1. */ + /* The table itself is sorted by major opcode number, and is otherwise in the order in which the disassembler should consider instructions. */ @@ -82,8 +96,8 @@ struct v850_operand string (the operand will be inserted in any case). If the operand value is legal, *ERRMSG will be unchanged (most operands can accept any value). */ - unsigned long (* insert) PARAMS ((unsigned long instruction, long op, - const char ** errmsg)); + unsigned long (* insert) + (unsigned long instruction, long op, const char ** errmsg); /* Extraction function. This is used by the disassembler. To extract this operand type from an instruction, check this field. @@ -101,7 +115,7 @@ struct v850_operand non-zero if this operand type can not actually be extracted from this operand (i.e., the instruction does not match). If the operand is valid, *INVALID will not be changed. */ - unsigned long (* extract) PARAMS ((unsigned long instruction, int * invalid)); + unsigned long (* extract) (unsigned long instruction, int * invalid); /* One bit syntax flags. */ int flags; @@ -137,22 +151,16 @@ extern const struct v850_operand v850_operands[]; promoted operands on the mn10300?) */ #define V850_OPERAND_RELAX 0x40 -/* Whether this argument is a N-bit offset for a sst.{h,w}/sld.{h,w,hu} - instruction, and the addend needs to be shifted right one bit */ -#define V850_OPERAND_ADJUST_SHORT_MEMORY 0x80 - /* The register specified must not be r0 */ -#define V850_NOT_R0 0x100 +#define V850_NOT_R0 0x80 -/* start-sanitize-v850e */ /* push/pop type instruction, V850E specific. */ -#define V850E_PUSH_POP 0x200 +#define V850E_PUSH_POP 0x100 /* 16 bit immediate follows instruction, V850E specific. */ -#define V850E_IMMEDIATE16 0x400 +#define V850E_IMMEDIATE16 0x200 /* 32 bit immediate follows instruction, V850E specific. */ -#define V850E_IMMEDIATE32 0x800 -/* end-sanitize-v850e */ +#define V850E_IMMEDIATE32 0x400 #endif /* V850_H */