xref: /netbsd-src/sys/arch/sh3/include/sh_opcode.h (revision 6d338ff407c0b6d89fda27d67bec3cc24bc29c36)
1*6d338ff4Such /* $NetBSD: sh_opcode.h,v 1.3 2002/04/28 17:10:36 uch Exp $ */
265363da2Sitojun 
365363da2Sitojun typedef union {
465363da2Sitojun 	unsigned word;
565363da2Sitojun 
6e0499770Smsaitoh #if _BYTE_ORDER == BIG_ENDIAN
765363da2Sitojun 	struct {
865363da2Sitojun 		unsigned op: 16;
965363da2Sitojun 	} oType;
1065363da2Sitojun 
1165363da2Sitojun 	struct {
1265363da2Sitojun 		unsigned op1: 4;
1365363da2Sitojun 		unsigned n: 4;
1465363da2Sitojun 		unsigned op2: 8;
1565363da2Sitojun 	} nType;
1665363da2Sitojun 
1765363da2Sitojun 	struct {
1865363da2Sitojun 		unsigned op1: 4;
1965363da2Sitojun 		unsigned m: 4;
2065363da2Sitojun 		unsigned op2: 8;
2165363da2Sitojun 	} mType;
2265363da2Sitojun 
2365363da2Sitojun 	struct {
2465363da2Sitojun 		unsigned op1: 4;
2565363da2Sitojun 		unsigned n: 4;
2665363da2Sitojun 		unsigned m: 4;
2765363da2Sitojun 		unsigned op2: 4;
2865363da2Sitojun 	} nmType;
2965363da2Sitojun 
3065363da2Sitojun 	struct {
3165363da2Sitojun 		unsigned op: 8;
3265363da2Sitojun 		unsigned m: 4;
3365363da2Sitojun 		unsigned d: 4;
3465363da2Sitojun 	} mdType;
3565363da2Sitojun 
3665363da2Sitojun 	struct {
3765363da2Sitojun 		unsigned op: 8;
3865363da2Sitojun 		unsigned n: 4;
3965363da2Sitojun 		unsigned d: 4;
4065363da2Sitojun 	} nd4Type;
4165363da2Sitojun 
4265363da2Sitojun 	struct {
4365363da2Sitojun 		unsigned op: 4;
4465363da2Sitojun 		unsigned n: 4;
4565363da2Sitojun 		unsigned m: 4;
4665363da2Sitojun 		unsigned d: 4;
4765363da2Sitojun 	} nmdType;
4865363da2Sitojun 
4965363da2Sitojun 	struct {
5065363da2Sitojun 		unsigned op: 8;
5165363da2Sitojun 		unsigned d: 8;
5265363da2Sitojun 	} dType;
5365363da2Sitojun 
5465363da2Sitojun 	struct {
5565363da2Sitojun 		unsigned op: 4;
5665363da2Sitojun 		unsigned d: 12;
5765363da2Sitojun 	} d12Type;
5865363da2Sitojun 
5965363da2Sitojun 	struct {
6065363da2Sitojun 		unsigned op: 4;
6165363da2Sitojun 		unsigned n: 4;
6265363da2Sitojun 		unsigned d: 8;
6365363da2Sitojun 	} nd8Type;
6465363da2Sitojun 
6565363da2Sitojun 	struct {
6665363da2Sitojun 		unsigned op: 8;
6765363da2Sitojun 		unsigned i: 8;
6865363da2Sitojun 	} iType;
6965363da2Sitojun 
7065363da2Sitojun 	struct {
7165363da2Sitojun 		unsigned op: 4;
7265363da2Sitojun 		unsigned n: 4;
7365363da2Sitojun 		unsigned i: 8;
7465363da2Sitojun 	} niType;
7565363da2Sitojun #endif
76e0499770Smsaitoh #if _BYTE_ORDER == LITTLE_ENDIAN
7765363da2Sitojun struct {
7865363da2Sitojun 		unsigned op: 16;
7965363da2Sitojun 	} oType;
8065363da2Sitojun 
8165363da2Sitojun 	struct {
8265363da2Sitojun 		unsigned op2: 8;
8365363da2Sitojun 		unsigned n: 4;
8465363da2Sitojun 		unsigned op1: 4;
8565363da2Sitojun 	} nType;
8665363da2Sitojun 
8765363da2Sitojun 	struct {
8865363da2Sitojun 		unsigned op2: 8;
8965363da2Sitojun 		unsigned m: 4;
9065363da2Sitojun 		unsigned op1: 4;
9165363da2Sitojun 	} mType;
9265363da2Sitojun 
9365363da2Sitojun 	struct {
9465363da2Sitojun 		unsigned op2: 4;
9565363da2Sitojun 		unsigned m: 4;
9665363da2Sitojun 		unsigned n: 4;
9765363da2Sitojun 		unsigned op1: 4;
9865363da2Sitojun 	} nmType;
9965363da2Sitojun 
10065363da2Sitojun 	struct {
10165363da2Sitojun 		unsigned d: 4;
10265363da2Sitojun 		unsigned m: 4;
10365363da2Sitojun 		unsigned op: 8;
10465363da2Sitojun 	} mdType;
10565363da2Sitojun 
10665363da2Sitojun 	struct {
10765363da2Sitojun 		unsigned d: 4;
10865363da2Sitojun 		unsigned n: 4;
10965363da2Sitojun 		unsigned op: 8;
11065363da2Sitojun 	} nd4Type;
11165363da2Sitojun 
11265363da2Sitojun 	struct {
11365363da2Sitojun 		unsigned d: 4;
11465363da2Sitojun 		unsigned m: 4;
11565363da2Sitojun 		unsigned n: 4;
11665363da2Sitojun 		unsigned op: 4;
11765363da2Sitojun 	} nmdType;
11865363da2Sitojun 
11965363da2Sitojun 	struct {
12065363da2Sitojun 		unsigned d: 8;
12165363da2Sitojun 		unsigned op: 8;
12265363da2Sitojun 	} dType;
12365363da2Sitojun 
12465363da2Sitojun 	struct {
12565363da2Sitojun 		unsigned d: 12;
12665363da2Sitojun 		unsigned op: 4;
12765363da2Sitojun 	} d12Type;
12865363da2Sitojun 
12965363da2Sitojun 	struct {
13065363da2Sitojun 		unsigned d: 8;
13165363da2Sitojun 		unsigned n: 4;
13265363da2Sitojun 		unsigned op: 4;
13365363da2Sitojun 	} nd8Type;
13465363da2Sitojun 
13565363da2Sitojun 	struct {
13665363da2Sitojun 		unsigned i: 8;
13765363da2Sitojun 		unsigned op: 8;
13865363da2Sitojun 	} iType;
13965363da2Sitojun 
14065363da2Sitojun 	struct {
14165363da2Sitojun 		unsigned i: 8;
14265363da2Sitojun 		unsigned n: 4;
14365363da2Sitojun 		unsigned op: 4;
14465363da2Sitojun 	} niType;
14565363da2Sitojun #endif
14665363da2Sitojun } InstFmt;
14765363da2Sitojun 
14865363da2Sitojun #define	OP_BF	0x8b
14965363da2Sitojun #define	OP_BFS	0x8f
15065363da2Sitojun #define	OP_BT	0x89
15165363da2Sitojun #define	OP_BTS	0x8d
15265363da2Sitojun #define	OP_BRA	0xa
15365363da2Sitojun #define	OP_BSR	0xb
15465363da2Sitojun #define	OP1_BRAF	0x0
15565363da2Sitojun #define	OP2_BRAF	0x23
15665363da2Sitojun #define	OP1_BSRF	0x0
15765363da2Sitojun #define	OP2_BSRF	0x03
15865363da2Sitojun #define	OP1_JMP	0x4
15965363da2Sitojun #define	OP2_JMP	0x2b
16065363da2Sitojun #define	OP1_JSR	0x4
16165363da2Sitojun #define	OP2_JSR	0x0b
16265363da2Sitojun #define	OP_RTS	0xffff
163