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