1*d2201f2fSdrahn /* PDP-11 opcde list. 2*d2201f2fSdrahn Copyright 2001, 2002 Free Software Foundation, Inc. 3*d2201f2fSdrahn 4*d2201f2fSdrahn This file is part of GDB and GAS. 5*d2201f2fSdrahn 6*d2201f2fSdrahn GDB and GAS are free software; you can redistribute it and/or modify 7*d2201f2fSdrahn it under the terms of the GNU General Public License as published by 8*d2201f2fSdrahn the Free Software Foundation; either version 1, or (at your option) 9*d2201f2fSdrahn any later version. 10*d2201f2fSdrahn 11*d2201f2fSdrahn GDB and GAS are distributed in the hope that it will be useful, 12*d2201f2fSdrahn but WITHOUT ANY WARRANTY; without even the implied warranty of 13*d2201f2fSdrahn MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*d2201f2fSdrahn GNU General Public License for more details. 15*d2201f2fSdrahn 16*d2201f2fSdrahn You should have received a copy of the GNU General Public License 17*d2201f2fSdrahn along with GDB or GAS; see the file COPYING. If not, write to 18*d2201f2fSdrahn the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 19*d2201f2fSdrahn 20*d2201f2fSdrahn /* 21*d2201f2fSdrahn * PDP-11 opcode types. 22*d2201f2fSdrahn */ 23*d2201f2fSdrahn 24*d2201f2fSdrahn #define PDP11_OPCODE_NO_OPS 0 25*d2201f2fSdrahn #define PDP11_OPCODE_REG 1 /* register */ 26*d2201f2fSdrahn #define PDP11_OPCODE_OP 2 /* generic operand */ 27*d2201f2fSdrahn #define PDP11_OPCODE_REG_OP 3 /* register and generic operand */ 28*d2201f2fSdrahn #define PDP11_OPCODE_REG_OP_REV 4 /* register and generic operand, 29*d2201f2fSdrahn reversed syntax */ 30*d2201f2fSdrahn #define PDP11_OPCODE_AC_FOP 5 /* fpu accumulator and generic float 31*d2201f2fSdrahn operand */ 32*d2201f2fSdrahn #define PDP11_OPCODE_OP_OP 6 /* two generic operands */ 33*d2201f2fSdrahn #define PDP11_OPCODE_DISPL 7 /* pc-relative displacement */ 34*d2201f2fSdrahn #define PDP11_OPCODE_REG_DISPL 8 /* redister and pc-relative 35*d2201f2fSdrahn displacement */ 36*d2201f2fSdrahn #define PDP11_OPCODE_IMM8 9 /* 8-bit immediate */ 37*d2201f2fSdrahn #define PDP11_OPCODE_IMM6 10 /* 6-bit immediate */ 38*d2201f2fSdrahn #define PDP11_OPCODE_IMM3 11 /* 3-bit immediate */ 39*d2201f2fSdrahn #define PDP11_OPCODE_ILLEGAL 12 /* illegal instruction */ 40*d2201f2fSdrahn #define PDP11_OPCODE_FOP_AC 13 /* generic float argument, then fpu 41*d2201f2fSdrahn accumulator */ 42*d2201f2fSdrahn #define PDP11_OPCODE_FOP 14 /* generic float operand */ 43*d2201f2fSdrahn #define PDP11_OPCODE_AC_OP 15 /* fpu accumulator and generic int 44*d2201f2fSdrahn operand */ 45*d2201f2fSdrahn #define PDP11_OPCODE_OP_AC 16 /* generic int argument, then fpu 46*d2201f2fSdrahn accumulator */ 47*d2201f2fSdrahn 48*d2201f2fSdrahn /* 49*d2201f2fSdrahn * PDP-11 instruction set extensions. 50*d2201f2fSdrahn * 51*d2201f2fSdrahn * Please keep the numbers low, as they are used as indices into 52*d2201f2fSdrahn * an array. 53*d2201f2fSdrahn */ 54*d2201f2fSdrahn 55*d2201f2fSdrahn #define PDP11_NONE 0 /* not in instruction set */ 56*d2201f2fSdrahn #define PDP11_BASIC 1 /* basic instruction set (11/20 etc) */ 57*d2201f2fSdrahn #define PDP11_CSM 2 /* commercial instruction set */ 58*d2201f2fSdrahn #define PDP11_CIS 3 /* commercial instruction set */ 59*d2201f2fSdrahn #define PDP11_EIS 4 /* extended instruction set (11/45 etc) */ 60*d2201f2fSdrahn #define PDP11_FIS 5 /* KEV11 floating-point instructions */ 61*d2201f2fSdrahn #define PDP11_FPP 6 /* FP-11 floating-point instructions */ 62*d2201f2fSdrahn #define PDP11_LEIS 7 /* limited extended instruction set 63*d2201f2fSdrahn (11/40 etc) */ 64*d2201f2fSdrahn #define PDP11_MFPT 8 /* move from processor type */ 65*d2201f2fSdrahn #define PDP11_MPROC 9 /* multiprocessor instructions: tstset, 66*d2201f2fSdrahn wrtlck */ 67*d2201f2fSdrahn #define PDP11_MXPS 10 /* move from/to processor status */ 68*d2201f2fSdrahn #define PDP11_SPL 11 /* set priority level */ 69*d2201f2fSdrahn #define PDP11_UCODE 12 /* microcode instructions: ldub, med, xfc */ 70*d2201f2fSdrahn #define PDP11_EXT_NUM 13 /* total number of extension types */ 71*d2201f2fSdrahn 72*d2201f2fSdrahn struct pdp11_opcode 73*d2201f2fSdrahn { 74*d2201f2fSdrahn const char *name; 75*d2201f2fSdrahn int opcode; 76*d2201f2fSdrahn int mask; 77*d2201f2fSdrahn int type; 78*d2201f2fSdrahn int extension; 79*d2201f2fSdrahn }; 80*d2201f2fSdrahn 81*d2201f2fSdrahn extern const struct pdp11_opcode pdp11_opcodes[]; 82*d2201f2fSdrahn extern const struct pdp11_opcode pdp11_aliases[]; 83*d2201f2fSdrahn extern const int pdp11_num_opcodes, pdp11_num_aliases; 84*d2201f2fSdrahn 85*d2201f2fSdrahn /* end of pdp11.h */ 86