[BACK]Return to mips_opcode.h CVS log [TXT][DIR] Up to [local] / sys / arch / mips64 / include

Annotation of sys/arch/mips64/include/mips_opcode.h, Revision 1.1.1.1

1.1       nbrk        1: /*      $OpenBSD: mips_opcode.h,v 1.2 2005/08/07 07:29:44 miod Exp $   */
                      2:
                      3: /*-
                      4:  * Copyright (c) 1992, 1993
                      5:  *     The Regents of the University of California.  All rights reserved.
                      6:  *
                      7:  * This code is derived from software contributed to Berkeley by
                      8:  * Ralph Campbell.
                      9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
                     18:  * 3. Neither the name of the University nor the names of its contributors
                     19:  *    may be used to endorse or promote products derived from this software
                     20:  *    without specific prior written permission.
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     23:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     24:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     25:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     26:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     27:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     28:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     29:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     30:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     31:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     32:  * SUCH DAMAGE.
                     33:  *
                     34:  *     from: @(#)mips_opcode.h 8.1 (Berkeley) 6/10/93
                     35:  */
                     36:
                     37: #ifndef _MIPS_MIPS_OPCODE_H_
                     38: #define _MIPS_MIPS_OPCODE_H_
                     39:
                     40: /*
                     41:  * Define the instruction formats and opcode values for the
                     42:  * MIPS instruction set.
                     43:  */
                     44:
                     45: /*
                     46:  * Define the instruction formats.
                     47:  */
                     48: typedef union {
                     49:        unsigned word;
                     50:
                     51: #if BYTE_ORDER == BIG_ENDIAN
                     52:        struct {
                     53:                unsigned op: 6;
                     54:                unsigned rs: 5;
                     55:                unsigned rt: 5;
                     56:                unsigned imm: 16;
                     57:        } IType;
                     58:
                     59:        struct {
                     60:                unsigned op: 6;
                     61:                unsigned target: 26;
                     62:        } JType;
                     63:
                     64:        struct {
                     65:                unsigned op: 6;
                     66:                unsigned rs: 5;
                     67:                unsigned rt: 5;
                     68:                unsigned rd: 5;
                     69:                unsigned shamt: 5;
                     70:                unsigned func: 6;
                     71:        } RType;
                     72:
                     73:        struct {
                     74:                unsigned op: 6;         /* always '0x11' */
                     75:                unsigned : 1;           /* always '1' */
                     76:                unsigned fmt: 4;
                     77:                unsigned ft: 5;
                     78:                unsigned fs: 5;
                     79:                unsigned fd: 5;
                     80:                unsigned func: 6;
                     81:        } FRType;
                     82: #endif
                     83: #if BYTE_ORDER == LITTLE_ENDIAN
                     84:        struct {
                     85:                unsigned imm: 16;
                     86:                unsigned rt: 5;
                     87:                unsigned rs: 5;
                     88:                unsigned op: 6;
                     89:        } IType;
                     90:
                     91:        struct {
                     92:                unsigned target: 26;
                     93:                unsigned op: 6;
                     94:        } JType;
                     95:
                     96:        struct {
                     97:                unsigned func: 6;
                     98:                unsigned shamt: 5;
                     99:                unsigned rd: 5;
                    100:                unsigned rt: 5;
                    101:                unsigned rs: 5;
                    102:                unsigned op: 6;
                    103:        } RType;
                    104:
                    105:        struct {
                    106:                unsigned func: 6;
                    107:                unsigned fd: 5;
                    108:                unsigned fs: 5;
                    109:                unsigned ft: 5;
                    110:                unsigned fmt: 4;
                    111:                unsigned : 1;           /* always '1' */
                    112:                unsigned op: 6;         /* always '0x11' */
                    113:        } FRType;
                    114: #endif
                    115: } InstFmt;
                    116:
                    117: /*
                    118:  * Values for the 'op' field.
                    119:  */
                    120: #define OP_SPECIAL     000
                    121: #define OP_BCOND       001
                    122: #define OP_J           002
                    123: #define        OP_JAL          003
                    124: #define OP_BEQ         004
                    125: #define OP_BNE         005
                    126: #define OP_BLEZ                006
                    127: #define OP_BGTZ                007
                    128:
                    129: #define OP_ADDI                010
                    130: #define OP_ADDIU       011
                    131: #define OP_SLTI                012
                    132: #define OP_SLTIU       013
                    133: #define OP_ANDI                014
                    134: #define OP_ORI         015
                    135: #define OP_XORI                016
                    136: #define OP_LUI         017
                    137:
                    138: #define OP_COP0                020
                    139: #define OP_COP1                021
                    140: #define OP_COP2                022
                    141: #define OP_COP3                023
                    142: #define        OP_BEQL         024
                    143: #define        OP_BNEL         025
                    144: #define        OP_BLEZL        026
                    145: #define        OP_BGTZL        027
                    146:
                    147: #define        OP_DADDI        030
                    148: #define        OP_DADDIU       031
                    149: #define        OP_LDL          032
                    150: #define        OP_LDR          033
                    151:
                    152: #define        OP_LB           040
                    153: #define        OP_LH           041
                    154: #define OP_LWL         042
                    155: #define OP_LW          043
                    156: #define OP_LBU         044
                    157: #define OP_LHU         045
                    158: #define OP_LWR         046
                    159: #define        OP_LHU          045
                    160: #define        OP_LWR          046
                    161: #define        OP_LWU          047
                    162:
                    163: #define OP_SB          050
                    164: #define OP_SH          051
                    165: #define OP_SWL         052
                    166: #define OP_SW          053
                    167: #define        OP_SDL          054
                    168: #define        OP_SDR          055
                    169: #define OP_SWR         056
                    170: #define        OP_CACHE        057
                    171:
                    172: #define OP_LL          060
                    173: #define OP_LWC1                061
                    174: #define OP_LWC2                062
                    175: #define OP_LWC3                063
                    176: #define        OP_LLD          064
                    177: #define        OP_LD           067
                    178:
                    179: #define OP_SC          070
                    180: #define OP_SWC1                071
                    181: #define OP_SWC2                072
                    182: #define OP_SWC3                073
                    183: #define        OP_SCD          074
                    184: #define        OP_SD           077
                    185:
                    186: /*
                    187:  * Values for the 'func' field when 'op' == OP_SPECIAL.
                    188:  */
                    189: #define OP_SLL         000
                    190: #define OP_SRL         002
                    191: #define OP_SRA         003
                    192: #define OP_SLLV                004
                    193: #define OP_SRLV                006
                    194: #define OP_SRAV                007
                    195:
                    196: #define OP_JR          010
                    197: #define OP_JALR                011
                    198: #define OP_SYSCALL     014
                    199: #define OP_BREAK       015
                    200: #define        OP_SYNC         017
                    201:
                    202: #define OP_MFHI                020
                    203: #define OP_MTHI                021
                    204: #define OP_MFLO                022
                    205: #define OP_MTLO                023
                    206: #define        OP_DSLLV        024
                    207: #define        OP_DSRLV        026
                    208: #define        OP_DSRAV        027
                    209:
                    210: #define OP_MULT                030
                    211: #define OP_MULTU       031
                    212: #define OP_DIV         032
                    213: #define OP_DIVU                033
                    214: #define        OP_DMULT        034
                    215: #define        OP_DMULTU       035
                    216: #define        OP_DDIV         036
                    217: #define        OP_DDIVU        037
                    218:
                    219:
                    220: #define OP_ADD         040
                    221: #define OP_ADDU                041
                    222: #define OP_SUB         042
                    223: #define OP_SUBU                043
                    224: #define OP_AND         044
                    225: #define OP_OR          045
                    226: #define OP_XOR         046
                    227: #define OP_NOR         047
                    228:
                    229: #define OP_SLT         052
                    230: #define OP_SLTU                053
                    231: #define        OP_DADD         054
                    232: #define        OP_DADDU        055
                    233: #define        OP_DSUB         056
                    234: #define        OP_DSUBU        057
                    235:
                    236: #define        OP_TGE          060
                    237: #define        OP_TGEU         061
                    238: #define        OP_TLT          062
                    239: #define        OP_TLTU         063
                    240: #define        OP_TEQ          064
                    241: #define        OP_TNE          066
                    242:
                    243: #define        OP_DSLL         070
                    244: #define        OP_DSRL         072
                    245: #define        OP_DSRA         073
                    246: #define        OP_DSLL32       074
                    247: #define        OP_DSRL32       076
                    248: #define        OP_DSRA32       077
                    249:
                    250: /*
                    251:  * Values for the 'func' field when 'op' == OP_BCOND.
                    252:  */
                    253: #define OP_BLTZ                000
                    254: #define OP_BGEZ                001
                    255: #define        OP_BLTZL        002
                    256: #define        OP_BGEZL        003
                    257:
                    258: #define        OP_TGEI         010
                    259: #define        OP_TGEIU        011
                    260: #define        OP_TLTI         012
                    261: #define        OP_TLTIU        013
                    262: #define        OP_TEQI         014
                    263: #define        OP_TNEI         016
                    264:
                    265: #define OP_BLTZAL      020
                    266: #define        OP_BLTZAL       020
                    267: #define OP_BGEZAL      021
                    268: #define OP_BLTZALL     022
                    269: #define        OP_BGEZALL      023
                    270:
                    271: /*
                    272:  * Values for the 'rs' field when 'op' == OP_COPz.
                    273:  */
                    274: #define OP_MF          000
                    275: #define        OP_DMF          001
                    276: #define OP_MT          004
                    277: #define        OP_DMT          005
                    278: #define OP_BCx         010
                    279: #define OP_BCy         014
                    280: #define OP_CF          002
                    281: #define OP_CT          006
                    282:
                    283: /*
                    284:  * Values for the 'rt' field when 'op' == OP_COPz.
                    285:  */
                    286: #define COPz_BC_TF_MASK        0x01
                    287: #define COPz_BC_TRUE   0x01
                    288: #define COPz_BC_FALSE  0x00
                    289: #define COPz_BCL_TF_MASK       0x02
                    290: #define COPz_BCL_TRUE  0x02
                    291: #define COPz_BCL_FALSE 0x00
                    292:
                    293: #endif /* !_MIPS_MIPS_OPCODE_H_ */

CVSweb