198b9484cSchristos /* PDP-11 opcde list. 2*aab831ceSchristos Copyright (C) 2001-2024 Free Software Foundation, Inc. 398b9484cSchristos 498b9484cSchristos This file is part of GDB and GAS. 598b9484cSchristos 698b9484cSchristos GDB and GAS are free software; you can redistribute it and/or modify 798b9484cSchristos it under the terms of the GNU General Public License as published by 898b9484cSchristos the Free Software Foundation; either version 3, or (at your option) 998b9484cSchristos any later version. 1098b9484cSchristos 1198b9484cSchristos GDB and GAS are distributed in the hope that it will be useful, 1298b9484cSchristos but WITHOUT ANY WARRANTY; without even the implied warranty of 1398b9484cSchristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1498b9484cSchristos GNU General Public License for more details. 1598b9484cSchristos 1698b9484cSchristos You should have received a copy of the GNU General Public License 1798b9484cSchristos along with GDB or GAS; see the file COPYING3. If not, write to 1898b9484cSchristos the Free Software Foundation, 51 Franklin Street - Fifth Floor, 1998b9484cSchristos Boston, MA 02110-1301, USA. */ 2098b9484cSchristos 2198b9484cSchristos /* PDP-11 opcode types. */ 2298b9484cSchristos 2398b9484cSchristos #define PDP11_OPCODE_NO_OPS 0 2498b9484cSchristos #define PDP11_OPCODE_REG 1 /* register */ 2598b9484cSchristos #define PDP11_OPCODE_OP 2 /* generic operand */ 2698b9484cSchristos #define PDP11_OPCODE_REG_OP 3 /* register and generic operand */ 2798b9484cSchristos #define PDP11_OPCODE_REG_OP_REV 4 /* register and generic operand, 2898b9484cSchristos reversed syntax */ 2998b9484cSchristos #define PDP11_OPCODE_AC_FOP 5 /* fpu accumulator and generic float 3098b9484cSchristos operand */ 3198b9484cSchristos #define PDP11_OPCODE_OP_OP 6 /* two generic operands */ 3298b9484cSchristos #define PDP11_OPCODE_DISPL 7 /* pc-relative displacement */ 3398b9484cSchristos #define PDP11_OPCODE_REG_DISPL 8 /* redister and pc-relative 3498b9484cSchristos displacement */ 3598b9484cSchristos #define PDP11_OPCODE_IMM8 9 /* 8-bit immediate */ 3698b9484cSchristos #define PDP11_OPCODE_IMM6 10 /* 6-bit immediate */ 3798b9484cSchristos #define PDP11_OPCODE_IMM3 11 /* 3-bit immediate */ 3898b9484cSchristos #define PDP11_OPCODE_ILLEGAL 12 /* illegal instruction */ 3998b9484cSchristos #define PDP11_OPCODE_FOP_AC 13 /* generic float argument, then fpu 4098b9484cSchristos accumulator */ 4198b9484cSchristos #define PDP11_OPCODE_FOP 14 /* generic float operand */ 4298b9484cSchristos #define PDP11_OPCODE_AC_OP 15 /* fpu accumulator and generic int 4398b9484cSchristos operand */ 4498b9484cSchristos #define PDP11_OPCODE_OP_AC 16 /* generic int argument, then fpu 4598b9484cSchristos accumulator */ 4698b9484cSchristos 4798b9484cSchristos /* 4898b9484cSchristos * PDP-11 instruction set extensions. 4998b9484cSchristos * 5098b9484cSchristos * Please keep the numbers low, as they are used as indices into 5198b9484cSchristos * an array. 5298b9484cSchristos */ 5398b9484cSchristos 5498b9484cSchristos #define PDP11_NONE 0 /* not in instruction set */ 5598b9484cSchristos #define PDP11_BASIC 1 /* basic instruction set (11/20 etc) */ 5698b9484cSchristos #define PDP11_CSM 2 /* commercial instruction set */ 5798b9484cSchristos #define PDP11_CIS 3 /* commercial instruction set */ 5898b9484cSchristos #define PDP11_EIS 4 /* extended instruction set (11/45 etc) */ 5998b9484cSchristos #define PDP11_FIS 5 /* KEV11 floating-point instructions */ 6098b9484cSchristos #define PDP11_FPP 6 /* FP-11 floating-point instructions */ 6198b9484cSchristos #define PDP11_LEIS 7 /* limited extended instruction set 6298b9484cSchristos (11/40 etc) */ 6398b9484cSchristos #define PDP11_MFPT 8 /* move from processor type */ 6498b9484cSchristos #define PDP11_MPROC 9 /* multiprocessor instructions: tstset, 6598b9484cSchristos wrtlck */ 6698b9484cSchristos #define PDP11_MXPS 10 /* move from/to processor status */ 6798b9484cSchristos #define PDP11_SPL 11 /* set priority level */ 6898b9484cSchristos #define PDP11_UCODE 12 /* microcode instructions: ldub, med, xfc */ 6998b9484cSchristos #define PDP11_EXT_NUM 13 /* total number of extension types */ 7098b9484cSchristos 7198b9484cSchristos struct pdp11_opcode 7298b9484cSchristos { 7398b9484cSchristos const char *name; 7498b9484cSchristos int opcode; 7598b9484cSchristos int mask; 7698b9484cSchristos int type; 7798b9484cSchristos int extension; 7898b9484cSchristos }; 7998b9484cSchristos 8098b9484cSchristos extern const struct pdp11_opcode pdp11_opcodes[]; 8198b9484cSchristos extern const struct pdp11_opcode pdp11_aliases[]; 8298b9484cSchristos extern const int pdp11_num_opcodes, pdp11_num_aliases; 8398b9484cSchristos 8498b9484cSchristos /* end of pdp11.h */ 85