xref: /netbsd/sys/arch/sh3/include/sh_opcode.h (revision bf9ec67e)
1 /* $NetBSD: sh_opcode.h,v 1.3 2002/04/28 17:10:36 uch Exp $ */
2 
3 typedef union {
4 	unsigned word;
5 
6 #if _BYTE_ORDER == BIG_ENDIAN
7 	struct {
8 		unsigned op: 16;
9 	} oType;
10 
11 	struct {
12 		unsigned op1: 4;
13 		unsigned n: 4;
14 		unsigned op2: 8;
15 	} nType;
16 
17 	struct {
18 		unsigned op1: 4;
19 		unsigned m: 4;
20 		unsigned op2: 8;
21 	} mType;
22 
23 	struct {
24 		unsigned op1: 4;
25 		unsigned n: 4;
26 		unsigned m: 4;
27 		unsigned op2: 4;
28 	} nmType;
29 
30 	struct {
31 		unsigned op: 8;
32 		unsigned m: 4;
33 		unsigned d: 4;
34 	} mdType;
35 
36 	struct {
37 		unsigned op: 8;
38 		unsigned n: 4;
39 		unsigned d: 4;
40 	} nd4Type;
41 
42 	struct {
43 		unsigned op: 4;
44 		unsigned n: 4;
45 		unsigned m: 4;
46 		unsigned d: 4;
47 	} nmdType;
48 
49 	struct {
50 		unsigned op: 8;
51 		unsigned d: 8;
52 	} dType;
53 
54 	struct {
55 		unsigned op: 4;
56 		unsigned d: 12;
57 	} d12Type;
58 
59 	struct {
60 		unsigned op: 4;
61 		unsigned n: 4;
62 		unsigned d: 8;
63 	} nd8Type;
64 
65 	struct {
66 		unsigned op: 8;
67 		unsigned i: 8;
68 	} iType;
69 
70 	struct {
71 		unsigned op: 4;
72 		unsigned n: 4;
73 		unsigned i: 8;
74 	} niType;
75 #endif
76 #if _BYTE_ORDER == LITTLE_ENDIAN
77 struct {
78 		unsigned op: 16;
79 	} oType;
80 
81 	struct {
82 		unsigned op2: 8;
83 		unsigned n: 4;
84 		unsigned op1: 4;
85 	} nType;
86 
87 	struct {
88 		unsigned op2: 8;
89 		unsigned m: 4;
90 		unsigned op1: 4;
91 	} mType;
92 
93 	struct {
94 		unsigned op2: 4;
95 		unsigned m: 4;
96 		unsigned n: 4;
97 		unsigned op1: 4;
98 	} nmType;
99 
100 	struct {
101 		unsigned d: 4;
102 		unsigned m: 4;
103 		unsigned op: 8;
104 	} mdType;
105 
106 	struct {
107 		unsigned d: 4;
108 		unsigned n: 4;
109 		unsigned op: 8;
110 	} nd4Type;
111 
112 	struct {
113 		unsigned d: 4;
114 		unsigned m: 4;
115 		unsigned n: 4;
116 		unsigned op: 4;
117 	} nmdType;
118 
119 	struct {
120 		unsigned d: 8;
121 		unsigned op: 8;
122 	} dType;
123 
124 	struct {
125 		unsigned d: 12;
126 		unsigned op: 4;
127 	} d12Type;
128 
129 	struct {
130 		unsigned d: 8;
131 		unsigned n: 4;
132 		unsigned op: 4;
133 	} nd8Type;
134 
135 	struct {
136 		unsigned i: 8;
137 		unsigned op: 8;
138 	} iType;
139 
140 	struct {
141 		unsigned i: 8;
142 		unsigned n: 4;
143 		unsigned op: 4;
144 	} niType;
145 #endif
146 } InstFmt;
147 
148 #define	OP_BF	0x8b
149 #define	OP_BFS	0x8f
150 #define	OP_BT	0x89
151 #define	OP_BTS	0x8d
152 #define	OP_BRA	0xa
153 #define	OP_BSR	0xb
154 #define	OP1_BRAF	0x0
155 #define	OP2_BRAF	0x23
156 #define	OP1_BSRF	0x0
157 #define	OP2_BSRF	0x03
158 #define	OP1_JMP	0x4
159 #define	OP2_JMP	0x2b
160 #define	OP1_JSR	0x4
161 #define	OP2_JSR	0x0b
162 #define	OP_RTS	0xffff
163