Back to index

cell-binutils  2.17cvs20070401
pdp11.h
Go to the documentation of this file.
00001 /* PDP-11 opcde list.
00002    Copyright 2001, 2002 Free Software Foundation, Inc.
00003 
00004 This file is part of GDB and GAS.
00005 
00006 GDB and GAS are free software; you can redistribute it and/or modify
00007 it under the terms of the GNU General Public License as published by
00008 the Free Software Foundation; either version 1, or (at your option)
00009 any later version.
00010 
00011 GDB and GAS are distributed in the hope that it will be useful,
00012 but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 GNU General Public License for more details.
00015 
00016 You should have received a copy of the GNU General Public License
00017 along with GDB or GAS; see the file COPYING.  If not, write to
00018 the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
00019 
00020 /*
00021  * PDP-11 opcode types.
00022  */
00023 
00024 #define PDP11_OPCODE_NO_OPS  0
00025 #define PDP11_OPCODE_REG     1     /* register */
00026 #define PDP11_OPCODE_OP             2     /* generic operand */
00027 #define PDP11_OPCODE_REG_OP  3     /* register and generic operand */
00028 #define PDP11_OPCODE_REG_OP_REV     4     /* register and generic operand,
00029                                       reversed syntax */
00030 #define PDP11_OPCODE_AC_FOP  5     /* fpu accumulator and generic float
00031                                       operand */
00032 #define PDP11_OPCODE_OP_OP   6     /* two generic operands */
00033 #define PDP11_OPCODE_DISPL   7     /* pc-relative displacement */
00034 #define PDP11_OPCODE_REG_DISPL      8     /* redister and pc-relative
00035                                       displacement */
00036 #define PDP11_OPCODE_IMM8    9     /* 8-bit immediate */
00037 #define PDP11_OPCODE_IMM6   10     /* 6-bit immediate */
00038 #define PDP11_OPCODE_IMM3   11     /* 3-bit immediate */
00039 #define PDP11_OPCODE_ILLEGAL       12     /* illegal instruction */
00040 #define PDP11_OPCODE_FOP_AC 13     /* generic float argument, then fpu
00041                                       accumulator */
00042 #define PDP11_OPCODE_FOP    14     /* generic float operand */
00043 #define PDP11_OPCODE_AC_OP  15     /* fpu accumulator and generic int
00044                                       operand */
00045 #define PDP11_OPCODE_OP_AC  16     /* generic int argument, then fpu
00046                                       accumulator */
00047 
00048 /*
00049  * PDP-11 instruction set extensions.
00050  *
00051  * Please keep the numbers low, as they are used as indices into
00052  * an array.
00053  */
00054 
00055 #define PDP11_NONE    0     /* not in instruction set */
00056 #define PDP11_BASIC   1     /* basic instruction set (11/20 etc) */
00057 #define PDP11_CSM     2     /* commercial instruction set */
00058 #define PDP11_CIS     3     /* commercial instruction set */
00059 #define PDP11_EIS     4     /* extended instruction set (11/45 etc) */
00060 #define PDP11_FIS     5     /* KEV11 floating-point instructions */
00061 #define PDP11_FPP     6     /* FP-11 floating-point instructions */
00062 #define PDP11_LEIS    7     /* limited extended instruction set
00063                                (11/40 etc) */
00064 #define PDP11_MFPT    8     /* move from processor type */
00065 #define PDP11_MPROC   9     /* multiprocessor instructions: tstset,
00066                                wrtlck */
00067 #define PDP11_MXPS   10     /* move from/to processor status */
00068 #define PDP11_SPL    11     /* set priority level */
00069 #define PDP11_UCODE  12     /* microcode instructions: ldub, med, xfc */
00070 #define PDP11_EXT_NUM       13     /* total number of extension types */
00071 
00072 struct pdp11_opcode
00073 {
00074   const char *name;
00075   int opcode;
00076   int mask;
00077   int type;
00078   int extension;
00079 };
00080 
00081 extern const struct pdp11_opcode pdp11_opcodes[];
00082 extern const struct pdp11_opcode pdp11_aliases[];
00083 extern const int pdp11_num_opcodes, pdp11_num_aliases;
00084 
00085 /* end of pdp11.h */