xref: /f-stack/freebsd/mips/include/mips_opcode.h (revision 22ce4aff)
1a9643ea8Slogwang /*	$OpenBSD: mips_opcode.h,v 1.2 1999/01/27 04:46:05 imp Exp $	*/
2a9643ea8Slogwang 
3a9643ea8Slogwang /*-
4*22ce4affSfengbojiang  * SPDX-License-Identifier: BSD-3-Clause
5*22ce4affSfengbojiang  *
6a9643ea8Slogwang  * Copyright (c) 1992, 1993
7a9643ea8Slogwang  *	The Regents of the University of California.  All rights reserved.
8a9643ea8Slogwang  *
9a9643ea8Slogwang  * This code is derived from software contributed to Berkeley by
10a9643ea8Slogwang  * Ralph Campbell.
11a9643ea8Slogwang  *
12a9643ea8Slogwang  * Redistribution and use in source and binary forms, with or without
13a9643ea8Slogwang  * modification, are permitted provided that the following conditions
14a9643ea8Slogwang  * are met:
15a9643ea8Slogwang  * 1. Redistributions of source code must retain the above copyright
16a9643ea8Slogwang  *    notice, this list of conditions and the following disclaimer.
17a9643ea8Slogwang  * 2. Redistributions in binary form must reproduce the above copyright
18a9643ea8Slogwang  *    notice, this list of conditions and the following disclaimer in the
19a9643ea8Slogwang  *    documentation and/or other materials provided with the distribution.
20*22ce4affSfengbojiang  * 3. Neither the name of the University nor the names of its contributors
21a9643ea8Slogwang  *    may be used to endorse or promote products derived from this software
22a9643ea8Slogwang  *    without specific prior written permission.
23a9643ea8Slogwang  *
24a9643ea8Slogwang  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25a9643ea8Slogwang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26a9643ea8Slogwang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27a9643ea8Slogwang  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28a9643ea8Slogwang  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29a9643ea8Slogwang  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30a9643ea8Slogwang  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31a9643ea8Slogwang  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32a9643ea8Slogwang  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33a9643ea8Slogwang  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34a9643ea8Slogwang  * SUCH DAMAGE.
35a9643ea8Slogwang  *
36a9643ea8Slogwang  *	from: @(#)mips_opcode.h 8.1 (Berkeley) 6/10/93
37a9643ea8Slogwang  *	JNPR: mips_opcode.h,v 1.1 2006/08/07 05:38:57 katta
38a9643ea8Slogwang  * $FreeBSD$
39a9643ea8Slogwang  */
40a9643ea8Slogwang 
41a9643ea8Slogwang #ifndef _MACHINE_MIPS_OPCODE_H_
42a9643ea8Slogwang #define	_MACHINE_MIPS_OPCODE_H_
43a9643ea8Slogwang 
44a9643ea8Slogwang /*
45a9643ea8Slogwang  * Define the instruction formats and opcode values for the
46a9643ea8Slogwang  * MIPS instruction set.
47a9643ea8Slogwang  */
48a9643ea8Slogwang #include <machine/endian.h>
49a9643ea8Slogwang 
50a9643ea8Slogwang /*
51a9643ea8Slogwang  * Define the instruction formats.
52a9643ea8Slogwang  */
53a9643ea8Slogwang typedef union {
54a9643ea8Slogwang 	unsigned word;
55a9643ea8Slogwang 
56a9643ea8Slogwang #if BYTE_ORDER == BIG_ENDIAN
57a9643ea8Slogwang 	struct {
58a9643ea8Slogwang 		unsigned op: 6;
59a9643ea8Slogwang 		unsigned rs: 5;
60a9643ea8Slogwang 		unsigned rt: 5;
61a9643ea8Slogwang 		unsigned imm: 16;
62a9643ea8Slogwang 	} IType;
63a9643ea8Slogwang 
64a9643ea8Slogwang 	struct {
65a9643ea8Slogwang 		unsigned op: 6;
66a9643ea8Slogwang 		unsigned target: 26;
67a9643ea8Slogwang 	} JType;
68a9643ea8Slogwang 
69a9643ea8Slogwang 	struct {
70a9643ea8Slogwang 		unsigned op: 6;
71a9643ea8Slogwang 		unsigned rs: 5;
72a9643ea8Slogwang 		unsigned rt: 5;
73a9643ea8Slogwang 		unsigned rd: 5;
74a9643ea8Slogwang 		unsigned shamt: 5;
75a9643ea8Slogwang 		unsigned func: 6;
76a9643ea8Slogwang 	} RType;
77a9643ea8Slogwang 
78a9643ea8Slogwang 	struct {
79a9643ea8Slogwang 		unsigned op: 6;		/* always '0x11' */
80a9643ea8Slogwang 		unsigned : 1;		/* always '1' */
81a9643ea8Slogwang 		unsigned fmt: 4;
82a9643ea8Slogwang 		unsigned ft: 5;
83a9643ea8Slogwang 		unsigned fs: 5;
84a9643ea8Slogwang 		unsigned fd: 5;
85a9643ea8Slogwang 		unsigned func: 6;
86a9643ea8Slogwang 	} FRType;
87a9643ea8Slogwang #endif
88a9643ea8Slogwang #if BYTE_ORDER == LITTLE_ENDIAN
89a9643ea8Slogwang 	struct {
90a9643ea8Slogwang 		unsigned imm: 16;
91a9643ea8Slogwang 		unsigned rt: 5;
92a9643ea8Slogwang 		unsigned rs: 5;
93a9643ea8Slogwang 		unsigned op: 6;
94a9643ea8Slogwang 	} IType;
95a9643ea8Slogwang 
96a9643ea8Slogwang 	struct {
97a9643ea8Slogwang 		unsigned target: 26;
98a9643ea8Slogwang 		unsigned op: 6;
99a9643ea8Slogwang 	} JType;
100a9643ea8Slogwang 
101a9643ea8Slogwang 	struct {
102a9643ea8Slogwang 		unsigned func: 6;
103a9643ea8Slogwang 		unsigned shamt: 5;
104a9643ea8Slogwang 		unsigned rd: 5;
105a9643ea8Slogwang 		unsigned rt: 5;
106a9643ea8Slogwang 		unsigned rs: 5;
107a9643ea8Slogwang 		unsigned op: 6;
108a9643ea8Slogwang 	} RType;
109a9643ea8Slogwang 
110a9643ea8Slogwang 	struct {
111a9643ea8Slogwang 		unsigned func: 6;
112a9643ea8Slogwang 		unsigned fd: 5;
113a9643ea8Slogwang 		unsigned fs: 5;
114a9643ea8Slogwang 		unsigned ft: 5;
115a9643ea8Slogwang 		unsigned fmt: 4;
116a9643ea8Slogwang 		unsigned : 1;		/* always '1' */
117a9643ea8Slogwang 		unsigned op: 6;		/* always '0x11' */
118a9643ea8Slogwang 	} FRType;
119a9643ea8Slogwang #endif
120a9643ea8Slogwang } InstFmt;
121a9643ea8Slogwang 
122a9643ea8Slogwang /* instruction field decoding macros */
123a9643ea8Slogwang #define	MIPS_INST_OPCODE(val)	(val >> 26)
124a9643ea8Slogwang #define	MIPS_INST_RS(val)	((val & 0x03e00000) >> 21)
125a9643ea8Slogwang #define	MIPS_INST_RT(val)	((val & 0x001f0000) >> 16)
126a9643ea8Slogwang #define	MIPS_INST_IMM(val)	((val & 0x0000ffff))
127a9643ea8Slogwang 
128a9643ea8Slogwang #define	MIPS_INST_RD(val)	((val & 0x0000f800) >> 11)
129a9643ea8Slogwang #define	MIPS_INST_SA(val)	((val & 0x000007c0) >> 6)
130a9643ea8Slogwang #define	MIPS_INST_FUNC(val)	(val & 0x0000003f)
131a9643ea8Slogwang 
132a9643ea8Slogwang #define	MIPS_INST_INDEX(val)	(val & 0x03ffffff)
133a9643ea8Slogwang 
134a9643ea8Slogwang /*
135a9643ea8Slogwang  * the mips opcode and function table use a 3bit row and 3bit col
136a9643ea8Slogwang  * number we define the following macro for easy transcribing
137a9643ea8Slogwang  */
138a9643ea8Slogwang 
139a9643ea8Slogwang #define	MIPS_OPCODE(r, c)	(((r & 0x07) << 3) | (c & 0x07))
140a9643ea8Slogwang 
141a9643ea8Slogwang /*
142a9643ea8Slogwang  * Values for the 'op' field.
143a9643ea8Slogwang  */
144a9643ea8Slogwang #define	OP_SPECIAL	000
145a9643ea8Slogwang #define	OP_BCOND	001
146a9643ea8Slogwang #define	OP_J		002
147a9643ea8Slogwang #define	OP_JAL		003
148a9643ea8Slogwang #define	OP_BEQ		004
149a9643ea8Slogwang #define	OP_BNE		005
150a9643ea8Slogwang #define	OP_BLEZ		006
151a9643ea8Slogwang #define	OP_BGTZ		007
152a9643ea8Slogwang 
153a9643ea8Slogwang #define	OP_REGIMM	OP_BCOND
154a9643ea8Slogwang 
155a9643ea8Slogwang #define	OP_ADDI		010
156a9643ea8Slogwang #define	OP_ADDIU	011
157a9643ea8Slogwang #define	OP_SLTI		012
158a9643ea8Slogwang #define	OP_SLTIU	013
159a9643ea8Slogwang #define	OP_ANDI		014
160a9643ea8Slogwang #define	OP_ORI		015
161a9643ea8Slogwang #define	OP_XORI		016
162a9643ea8Slogwang #define	OP_LUI		017
163a9643ea8Slogwang 
164a9643ea8Slogwang #define	OP_COP0		020
165a9643ea8Slogwang #define	OP_COP1		021
166a9643ea8Slogwang #define	OP_COP2		022
167a9643ea8Slogwang #define	OP_COP3		023
168a9643ea8Slogwang #define	OP_BEQL		024
169a9643ea8Slogwang #define	OP_BNEL		025
170a9643ea8Slogwang #define	OP_BLEZL	026
171a9643ea8Slogwang #define	OP_BGTZL	027
172a9643ea8Slogwang 
173a9643ea8Slogwang #define	OP_COP1X	OP_COP3
174a9643ea8Slogwang 
175a9643ea8Slogwang #define	OP_DADDI	030
176a9643ea8Slogwang #define	OP_DADDIU	031
177a9643ea8Slogwang #define	OP_LDL		032
178a9643ea8Slogwang #define	OP_LDR		033
179a9643ea8Slogwang 
180a9643ea8Slogwang #define OP_SPECIAL2	034
181a9643ea8Slogwang #define OP_JALX		035
182a9643ea8Slogwang 
183a9643ea8Slogwang #define OP_SPECIAL3	037
184a9643ea8Slogwang 
185a9643ea8Slogwang #define	OP_LB		040
186a9643ea8Slogwang #define	OP_LH		041
187a9643ea8Slogwang #define	OP_LWL		042
188a9643ea8Slogwang #define	OP_LW		043
189a9643ea8Slogwang #define	OP_LBU		044
190a9643ea8Slogwang #define	OP_LHU		045
191a9643ea8Slogwang #define	OP_LWR		046
192a9643ea8Slogwang #define	OP_LWU		047
193a9643ea8Slogwang 
194a9643ea8Slogwang #define	OP_SB		050
195a9643ea8Slogwang #define	OP_SH		051
196a9643ea8Slogwang #define	OP_SWL		052
197a9643ea8Slogwang #define	OP_SW		053
198a9643ea8Slogwang #define	OP_SDL		054
199a9643ea8Slogwang #define	OP_SDR		055
200a9643ea8Slogwang #define	OP_SWR		056
201a9643ea8Slogwang #define	OP_CACHE	057
202a9643ea8Slogwang 
203a9643ea8Slogwang #define	OP_LL		060
204a9643ea8Slogwang #define	OP_LWC1		061
205a9643ea8Slogwang #define	OP_LWC2		062
206a9643ea8Slogwang #define	OP_LWC3		063
207a9643ea8Slogwang #define	OP_LLD		064
208a9643ea8Slogwang #define	OP_LDC1		065
209a9643ea8Slogwang #define	OP_LDC2		066
210a9643ea8Slogwang #define	OP_LD		067
211a9643ea8Slogwang 
212a9643ea8Slogwang #define	OP_PREF		OP_LWC3
213a9643ea8Slogwang 
214a9643ea8Slogwang #define	OP_SC		070
215a9643ea8Slogwang #define	OP_SWC1		071
216a9643ea8Slogwang #define	OP_SWC2		072
217a9643ea8Slogwang #define	OP_SWC3		073
218a9643ea8Slogwang #define	OP_SCD		074
219a9643ea8Slogwang #define	OP_SDC1		075
220a9643ea8Slogwang #define	OP_SDC2		076
221a9643ea8Slogwang #define	OP_SD		077
222a9643ea8Slogwang 
223a9643ea8Slogwang /*
224a9643ea8Slogwang  * Values for the 'func' field when 'op' == OP_SPECIAL.
225a9643ea8Slogwang  */
226a9643ea8Slogwang #define	OP_SLL		000
227a9643ea8Slogwang #define	OP_MOVCI	001
228a9643ea8Slogwang #define	OP_SRL		002
229a9643ea8Slogwang #define	OP_SRA		003
230a9643ea8Slogwang #define	OP_SLLV		004
231a9643ea8Slogwang #define	OP_SRLV		006
232a9643ea8Slogwang #define	OP_SRAV		007
233a9643ea8Slogwang 
234a9643ea8Slogwang #define	OP_F_SLL	OP_SLL
235a9643ea8Slogwang #define	OP_F_MOVCI	OP_MOVCI
236a9643ea8Slogwang #define	OP_F_SRL	OP_SRL
237a9643ea8Slogwang #define	OP_F_SRA	OP_SRA
238a9643ea8Slogwang #define	OP_F_SLLV	OP_SLLV
239a9643ea8Slogwang #define	OP_F_SRLV	OP_SRLV
240a9643ea8Slogwang #define	OP_F_SRAV	OP_SRAV
241a9643ea8Slogwang 
242a9643ea8Slogwang #define	OP_JR		010
243a9643ea8Slogwang #define	OP_JALR		011
244a9643ea8Slogwang #define	OP_MOVZ		012
245a9643ea8Slogwang #define	OP_MOVN		013
246a9643ea8Slogwang #define	OP_SYSCALL	014
247a9643ea8Slogwang #define	OP_BREAK	015
248a9643ea8Slogwang #define	OP_SYNC		017
249a9643ea8Slogwang 
250a9643ea8Slogwang #define	OP_F_JR		OP_JR
251a9643ea8Slogwang #define	OP_F_JALR	OP_JALR
252a9643ea8Slogwang #define	OP_F_MOVZ	OP_MOVZ
253a9643ea8Slogwang #define	OP_F_MOVN	OP_MOVN
254a9643ea8Slogwang #define	OP_F_SYSCALL	OP_SYSCALL
255a9643ea8Slogwang #define	OP_F_BREAK	OP_BREAK
256a9643ea8Slogwang #define	OP_F_SYNC	OP_SYNC
257a9643ea8Slogwang 
258a9643ea8Slogwang #define	OP_MFHI		020
259a9643ea8Slogwang #define	OP_MTHI		021
260a9643ea8Slogwang #define	OP_MFLO		022
261a9643ea8Slogwang #define	OP_MTLO		023
262a9643ea8Slogwang #define	OP_DSLLV	024
263a9643ea8Slogwang #define	OP_DSRLV	026
264a9643ea8Slogwang #define	OP_DSRAV	027
265a9643ea8Slogwang 
266a9643ea8Slogwang #define	OP_F_MFHI	OP_MFHI
267a9643ea8Slogwang #define	OP_F_MTHI	OP_MTHI
268a9643ea8Slogwang #define	OP_F_MFLO	OP_MFLO
269a9643ea8Slogwang #define	OP_F_MTLO	OP_MTLO
270a9643ea8Slogwang #define	OP_F_DSLLV	OP_DSLLV
271a9643ea8Slogwang #define	OP_F_DSRLV	OP_DSRLV
272a9643ea8Slogwang #define	OP_F_DSRAV	OP_DSRAV
273a9643ea8Slogwang 
274a9643ea8Slogwang #define	OP_MULT		030
275a9643ea8Slogwang #define	OP_MULTU	031
276a9643ea8Slogwang #define	OP_DIV		032
277a9643ea8Slogwang #define	OP_DIVU		033
278a9643ea8Slogwang #define	OP_DMULT	034
279a9643ea8Slogwang #define	OP_DMULTU	035
280a9643ea8Slogwang #define	OP_DDIV		036
281a9643ea8Slogwang #define	OP_DDIVU	037
282a9643ea8Slogwang 
283a9643ea8Slogwang #define	OP_F_MULT	OP_MULT
284a9643ea8Slogwang #define	OP_F_MULTU	OP_MULTU
285a9643ea8Slogwang #define	OP_F_DIV	OP_DIV
286a9643ea8Slogwang #define	OP_F_DIVU	OP_DIVU
287a9643ea8Slogwang #define	OP_F_DMULT	OP_DMULT
288a9643ea8Slogwang #define	OP_F_DMULTU	OP_DMULTU
289a9643ea8Slogwang #define	OP_F_DDIV	OP_DDIV
290a9643ea8Slogwang #define	OP_F_DDIVU	OP_DDIVU
291a9643ea8Slogwang 
292a9643ea8Slogwang #define	OP_ADD		040
293a9643ea8Slogwang #define	OP_ADDU		041
294a9643ea8Slogwang #define	OP_SUB		042
295a9643ea8Slogwang #define	OP_SUBU		043
296a9643ea8Slogwang #define	OP_AND		044
297a9643ea8Slogwang #define	OP_OR		045
298a9643ea8Slogwang #define	OP_XOR		046
299a9643ea8Slogwang #define	OP_NOR		047
300a9643ea8Slogwang 
301a9643ea8Slogwang #define	OP_F_ADD	OP_ADD
302a9643ea8Slogwang #define	OP_F_ADDU	OP_ADDU
303a9643ea8Slogwang #define	OP_F_SUB	OP_SUB
304a9643ea8Slogwang #define	OP_F_SUBU	OP_SUBU
305a9643ea8Slogwang #define	OP_F_AND	OP_AND
306a9643ea8Slogwang #define	OP_F_OR		OP_OR
307a9643ea8Slogwang #define	OP_F_XOR	OP_XOR
308a9643ea8Slogwang #define	OP_F_NOR	OP_NOR
309a9643ea8Slogwang 
310a9643ea8Slogwang #define	OP_SLT		052
311a9643ea8Slogwang #define	OP_SLTU		053
312a9643ea8Slogwang #define	OP_DADD		054
313a9643ea8Slogwang #define	OP_DADDU	055
314a9643ea8Slogwang #define	OP_DSUB		056
315a9643ea8Slogwang #define	OP_DSUBU	057
316a9643ea8Slogwang 
317a9643ea8Slogwang #define	OP_F_SLT	OP_SLT
318a9643ea8Slogwang #define	OP_F_SLTU	OP_SLTU
319a9643ea8Slogwang #define	OP_F_DADD	OP_DADD
320a9643ea8Slogwang #define	OP_F_DADDU	OP_DADDU
321a9643ea8Slogwang #define	OP_F_DSUB	OP_DSUB
322a9643ea8Slogwang #define	OP_F_DSUBU	OP_DSUBU
323a9643ea8Slogwang 
324a9643ea8Slogwang #define	OP_TGE		060
325a9643ea8Slogwang #define	OP_TGEU		061
326a9643ea8Slogwang #define	OP_TLT		062
327a9643ea8Slogwang #define	OP_TLTU		063
328a9643ea8Slogwang #define	OP_TEQ		064
329a9643ea8Slogwang #define	OP_TNE		066
330a9643ea8Slogwang 
331a9643ea8Slogwang #define	OP_F_TGE	OP_TGE
332a9643ea8Slogwang #define	OP_F_TGEU	OP_TGEU
333a9643ea8Slogwang #define	OP_F_TLT	OP_TLT
334a9643ea8Slogwang #define	OP_F_TLTU	OP_TLTU
335a9643ea8Slogwang #define	OP_F_TEQ	OP_TEQ
336a9643ea8Slogwang #define	OP_F_TNE	OP_TNE
337a9643ea8Slogwang 
338a9643ea8Slogwang #define	OP_DSLL		070
339a9643ea8Slogwang #define	OP_DSRL		072
340a9643ea8Slogwang #define	OP_DSRA		073
341a9643ea8Slogwang #define	OP_DSLL32	074
342a9643ea8Slogwang #define	OP_DSRL32	076
343a9643ea8Slogwang #define	OP_DSRA32	077
344a9643ea8Slogwang 
345a9643ea8Slogwang #define	OP_F_DSLL	OP_DSLL
346a9643ea8Slogwang #define	OP_F_DSRL	OP_DSRL
347a9643ea8Slogwang #define	OP_F_DSRA	OP_DSRA
348a9643ea8Slogwang #define	OP_F_DSLL32	OP_DSLL32
349a9643ea8Slogwang #define	OP_F_DSRL32	OP_DSRL32
350a9643ea8Slogwang #define	OP_F_DSRA32	OP_DSRA32
351a9643ea8Slogwang 
352a9643ea8Slogwang /*
353a9643ea8Slogwang  * The REGIMM - register immediate instructions are further
354a9643ea8Slogwang  * decoded using this table that has 2bit row numbers, hence
355a9643ea8Slogwang  * a need for a new helper macro.
356a9643ea8Slogwang  */
357a9643ea8Slogwang 
358a9643ea8Slogwang #define	MIPS_ROP(r, c)	((r & 0x03) << 3) | (c & 0x07)
359a9643ea8Slogwang 
360a9643ea8Slogwang /*
361a9643ea8Slogwang  * Values for the 'func' field when 'op' == OP_BCOND.
362a9643ea8Slogwang  */
363a9643ea8Slogwang #define	OP_BLTZ		000
364a9643ea8Slogwang #define	OP_BGEZ		001
365a9643ea8Slogwang #define	OP_BLTZL	002
366a9643ea8Slogwang #define	OP_BGEZL	003
367a9643ea8Slogwang 
368a9643ea8Slogwang #define	OP_R_BLTZ	OP_BLTZ
369a9643ea8Slogwang #define	OP_R_BGEZ	OP_BGEZ
370a9643ea8Slogwang #define	OP_R_BLTZL	OP_BLTZL
371a9643ea8Slogwang #define	OP_R_BGEZL	OP_BGEZL
372a9643ea8Slogwang 
373a9643ea8Slogwang #define	OP_TGEI		010
374a9643ea8Slogwang #define	OP_TGEIU	011
375a9643ea8Slogwang #define	OP_TLTI		012
376a9643ea8Slogwang #define	OP_TLTIU	013
377a9643ea8Slogwang #define	OP_TEQI		014
378a9643ea8Slogwang #define	OP_TNEI		016
379a9643ea8Slogwang 
380a9643ea8Slogwang #define	OP_R_TGEI	OP_TGEI
381a9643ea8Slogwang #define	OP_R_TGEIU	OP_TGEIU
382a9643ea8Slogwang #define	OP_R_TLTI	OP_TLTI
383a9643ea8Slogwang #define	OP_R_TLTIU	OP_TLTIU
384a9643ea8Slogwang #define	OP_R_TEQI	OP_TEQI
385a9643ea8Slogwang #define	OP_R_TNEI	OP_TNEI
386a9643ea8Slogwang 
387a9643ea8Slogwang #define	OP_BLTZAL	020
388a9643ea8Slogwang #define	OP_BGEZAL	021
389a9643ea8Slogwang #define	OP_BLTZALL	022
390a9643ea8Slogwang #define	OP_BGEZALL	023
391a9643ea8Slogwang 
392a9643ea8Slogwang #define	OP_R_BLTZAL	OP_BLTZAL
393a9643ea8Slogwang #define	OP_R_BGEZAL	OP_BGEZAL
394a9643ea8Slogwang #define	OP_R_BLTZALL	OP_BLTZALL
395a9643ea8Slogwang #define	OP_R_BGEZALL	OP_BGEZALL
396a9643ea8Slogwang 
397a9643ea8Slogwang /*
398a9643ea8Slogwang  * Values for the 'func' field when 'op' == OP_SPECIAL3.
399a9643ea8Slogwang  */
400a9643ea8Slogwang #define	OP_RDHWR	073
401a9643ea8Slogwang 
402a9643ea8Slogwang /*
403a9643ea8Slogwang  * Values for the 'rs' field when 'op' == OP_COPz.
404a9643ea8Slogwang  */
405a9643ea8Slogwang #define	OP_MF		000
406a9643ea8Slogwang #define	OP_DMF		001
407a9643ea8Slogwang #define	OP_MT		004
408a9643ea8Slogwang #define	OP_DMT		005
409a9643ea8Slogwang #define	OP_BCx		010
410a9643ea8Slogwang #define	OP_BCy		014
411a9643ea8Slogwang #define	OP_CF		002
412a9643ea8Slogwang #define	OP_CT		006
413a9643ea8Slogwang 
414a9643ea8Slogwang /*
415a9643ea8Slogwang  * Values for the 'rt' field when 'op' == OP_COPz.
416a9643ea8Slogwang  */
417a9643ea8Slogwang #define	COPz_BC_TF_MASK		0x01
418a9643ea8Slogwang #define	COPz_BC_TRUE		0x01
419a9643ea8Slogwang #define	COPz_BC_FALSE		0x00
420a9643ea8Slogwang #define	COPz_BCL_TF_MASK	0x02
421a9643ea8Slogwang #define	COPz_BCL_TRUE		0x02
422a9643ea8Slogwang #define	COPz_BCL_FALSE		0x00
423a9643ea8Slogwang 
424a9643ea8Slogwang #endif /* !_MACHINE_MIPS_OPCODE_H_ */
425