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