xref: /netbsd-src/external/gpl3/gdb/dist/include/opcode/pdp11.h (revision aab831cebf6361fb2b518a47c70732e608d9abd2)
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