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