mips_opcode.h revision 2bc2b792782b304b15d8c48b54916a9b3fa3a7ac
12bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*  $NetBSD: mips_opcode.h,v 1.12 2005/12/11 12:18:09 christos Exp $    */
22bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
32bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*-
42bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Copyright (c) 1992, 1993
52bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *  The Regents of the University of California.  All rights reserved.
62bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *
72bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * This code is derived from software contributed to Berkeley by
82bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Ralph Campbell.
92bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *
102bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Redistribution and use in source and binary forms, with or without
112bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * modification, are permitted provided that the following conditions
122bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * are met:
132bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * 1. Redistributions of source code must retain the above copyright
142bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *    notice, this list of conditions and the following disclaimer.
152bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * 2. Redistributions in binary form must reproduce the above copyright
162bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *    notice, this list of conditions and the following disclaimer in the
172bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *    documentation and/or other materials provided with the distribution.
182bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * 3. Neither the name of the University nor the names of its contributors
192bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *    may be used to endorse or promote products derived from this software
202bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *    without specific prior written permission.
212bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *
222bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
232bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
242bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
252bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
262bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
272bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
282bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
292bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
302bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
312bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
322bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * SUCH DAMAGE.
332bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *
342bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind *  @(#)mips_opcode.h   8.1 (Berkeley) 6/10/93
352bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
362bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
372bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
382bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Define the instruction formats and opcode values for the
392bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * MIPS instruction set.
402bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
412bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
422bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#include <endian.h>
432bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
442bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
452bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Define the instruction formats.
462bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
472bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lindtypedef union {
482bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    unsigned word;
492bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
502bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#if BYTE_ORDER == LITTLE_ENDIAN
512bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
522bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned imm: 16;
532bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rt: 5;
542bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rs: 5;
552bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;
562bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } IType;
572bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
582bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
592bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned target: 26;
602bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;
612bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } JType;
622bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
632bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
642bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned func: 6;
652bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned shamt: 5;
662bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rd: 5;
672bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rt: 5;
682bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rs: 5;
692bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;
702bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } RType;
712bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
722bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
732bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned func: 6;
742bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned fd: 5;
752bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned fs: 5;
762bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned ft: 5;
772bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned fmt: 4;
782bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned : 1;       /* always '1' */
792bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;     /* always '0x11' */
802bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } FRType;
812bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#endif
822bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#if BYTE_ORDER == BIG_ENDIAN
832bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
842bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;
852bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rs: 5;
862bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rt: 5;
872bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned imm: 16;
882bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } IType;
892bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
902bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
912bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;
922bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned target: 26;
932bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } JType;
942bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
952bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
962bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;
972bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rs: 5;
982bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rt: 5;
992bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned rd: 5;
1002bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned shamt: 5;
1012bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned func: 6;
1022bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } RType;
1032bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1042bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    struct {
1052bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned op: 6;     /* always '0x11' */
1062bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned : 1;       /* always '1' */
1072bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned fmt: 4;
1082bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned ft: 5;
1092bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned fs: 5;
1102bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned fd: 5;
1112bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind        unsigned func: 6;
1122bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    } FRType;
1132bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#endif
1142bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind} InstFmt;
1152bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1162bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
1172bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'op' field.
1182bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
1192bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SPECIAL  000
1202bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BCOND    001
1212bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_J        002
1222bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_JAL      003
1232bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BEQ      004
1242bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BNE      005
1252bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BLEZ     006
1262bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BGTZ     007
1272bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1282bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_ADDI     010
1292bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_ADDIU    011
1302bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SLTI     012
1312bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SLTIU    013
1322bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_ANDI     014
1332bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_ORI      015
1342bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_XORI     016
1352bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LUI      017
1362bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1372bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_COP0     020
1382bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_COP1     021
1392bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_COP2     022
1402bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_COP3     023
1412bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BEQL     024     /* MIPS-II, for r4000 port */
1422bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BNEL     025     /* MIPS-II, for r4000 port */
1432bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BLEZL    026     /* MIPS-II, for r4000 port */
1442bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BGTZL    027     /* MIPS-II, for r4000 port */
1452bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1462bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DADDI    030     /* MIPS-II, for r4000 port */
1472bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DADDIU   031     /* MIPS-II, for r4000 port */
1482bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LDL      032     /* MIPS-II, for r4000 port */
1492bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LDR      033     /* MIPS-II, for r4000 port */
1502bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1512bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SPECIAL2 034     /* QED opcodes */
1522bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SPECIAL3 037     /* mips32r2 opcodes */
1532bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1542bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LB       040
1552bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LH       041
1562bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWL      042
1572bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LW       043
1582bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LBU      044
1592bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LHU      045
1602bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWR      046
1612bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LHU      045
1622bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWR      046
1632bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWU      047     /* MIPS-II, for r4000 port */
1642bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1652bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SB       050
1662bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SH       051
1672bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SWL      052
1682bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SW       053
1692bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SDL      054     /* MIPS-II, for r4000 port */
1702bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SDR      055     /* MIPS-II, for r4000 port */
1712bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SWR      056
1722bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_CACHE    057     /* MIPS-II, for r4000 port */
1732bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1742bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LL       060
1752bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWC0     OP_LL   /* backwards source compatibility */
1762bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWC1     061
1772bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWC2     062
1782bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LWC3     063
1792bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LLD      064     /* MIPS-II, for r4000 port */
1802bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LDC1     065
1812bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_LD       067     /* MIPS-II, for r4000 port */
1822bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1832bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SC       070
1842bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SWC0     OP_SC   /* backwards source compatibility */
1852bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SWC1     071
1862bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SWC2     072
1872bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SWC3     073
1882bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SCD      074     /* MIPS-II, for r4000 port */
1892bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SDC1     075
1902bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SD       077     /* MIPS-II, for r4000 port */
1912bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1922bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
1932bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'func' field when 'op' == OP_SPECIAL.
1942bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
1952bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SLL      000
1962bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SRL      002
1972bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SRA      003
1982bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SLLV     004
1992bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SRLV     006
2002bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SRAV     007
2012bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2022bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_JR       010
2032bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_JALR     011
2042bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SYSCALL  014
2052bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BREAK    015
2062bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SYNC     017     /* MIPS-II, for r4000 port */
2072bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2082bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MFHI     020
2092bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MTHI     021
2102bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MFLO     022
2112bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MTLO     023
2122bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSLLV    024     /* MIPS-II, for r4000 port */
2132bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSRLV    026     /* MIPS-II, for r4000 port */
2142bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSRAV    027     /* MIPS-II, for r4000 port */
2152bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2162bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MULT     030
2172bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MULTU    031
2182bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DIV      032
2192bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DIVU     033
2202bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DMULT    034     /* MIPS-II, for r4000 port */
2212bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DMULTU   035     /* MIPS-II, for r4000 port */
2222bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DDIV     036     /* MIPS-II, for r4000 port */
2232bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DDIVU    037     /* MIPS-II, for r4000 port */
2242bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2252bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_ADD      040
2262bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_ADDU     041
2272bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SUB      042
2282bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SUBU     043
2292bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_AND      044
2302bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_OR       045
2312bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_XOR      046
2322bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_NOR      047
2332bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2342bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SLT      052
2352bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SLTU     053
2362bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DADD     054     /* MIPS-II, for r4000 port */
2372bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DADDU    055     /* MIPS-II, for r4000 port */
2382bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSUB     056     /* MIPS-II, for r4000 port */
2392bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSUBU    057     /* MIPS-II, for r4000 port */
2402bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2412bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TGE      060     /* MIPS-II, for r4000 port */
2422bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TGEU     061     /* MIPS-II, for r4000 port */
2432bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TLT      062     /* MIPS-II, for r4000 port */
2442bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TLTU     063     /* MIPS-II, for r4000 port */
2452bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TEQ      064     /* MIPS-II, for r4000 port */
2462bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TNE      066     /* MIPS-II, for r4000 port */
2472bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2482bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSLL     070     /* MIPS-II, for r4000 port */
2492bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSRL     072     /* MIPS-II, for r4000 port */
2502bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSRA     073     /* MIPS-II, for r4000 port */
2512bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSLL32   074     /* MIPS-II, for r4000 port */
2522bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSRL32   076     /* MIPS-II, for r4000 port */
2532bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DSRA32   077     /* MIPS-II, for r4000 port */
2542bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2552bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
2562bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'func' field when 'op' == OP_SPECIAL2.
2572bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
2582bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MAD      000     /* QED */
2592bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MADU     001     /* QED */
2602bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MUL      002     /* QED */
2612bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2622bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
2632bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'func' field when 'op' == OP_SPECIAL3.
2642bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
2652bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_EXT      000
2662bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_INS      004
2672bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BSHFL    040
2682bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2692bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
2702bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'shamt' field when OP_SPECIAL3 && func OP_BSHFL.
2712bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
2722bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_WSBH     002
2732bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SEB      020
2742bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_SEH      030
2752bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2762bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
2772bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'func' field when 'op' == OP_BCOND.
2782bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
2792bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BLTZ     000
2802bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BGEZ     001
2812bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BLTZL    002     /* MIPS-II, for r4000 port */
2822bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BGEZL    003     /* MIPS-II, for r4000 port */
2832bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2842bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TGEI     010     /* MIPS-II, for r4000 port */
2852bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TGEIU    011     /* MIPS-II, for r4000 port */
2862bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TLTI     012     /* MIPS-II, for r4000 port */
2872bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TLTIU    013     /* MIPS-II, for r4000 port */
2882bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TEQI     014     /* MIPS-II, for r4000 port */
2892bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_TNEI     016     /* MIPS-II, for r4000 port */
2902bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2912bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BLTZAL   020     /* MIPS-II, for r4000 port */
2922bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BGEZAL   021
2932bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BLTZALL  022
2942bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BGEZALL  023
2952bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
2962bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
2972bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'rs' field when 'op' == OP_COPz.
2982bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
2992bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MF       000
3002bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DMF      001     /* MIPS-II, for r4000 port */
3012bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_MT       004
3022bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_DMT      005     /* MIPS-II, for r4000 port */
3032bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BCx      010
3042bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_BCy      014
3052bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_CF       002
3062bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define OP_CT       006
3072bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
3082bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind/*
3092bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind * Values for the 'rt' field when 'op' == OP_COPz.
3102bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind */
3112bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define COPz_BC_TF_MASK 0x01
3122bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define COPz_BC_TRUE    0x01
3132bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define COPz_BC_FALSE   0x00
3142bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define COPz_BCL_TF_MASK    0x02        /* MIPS-II, for r4000 port */
3152bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define COPz_BCL_TRUE   0x02        /* MIPS-II, for r4000 port */
3162bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind#define COPz_BCL_FALSE  0x00        /* MIPS-II, for r4000 port */
317