1a5a4af3bSchristos /* bfin.h -- Header file for ADI Blackfin opcode table 2*8b657b07Schristos Copyright (C) 2005-2022 Free Software Foundation, Inc. 3a5a4af3bSchristos 4a5a4af3bSchristos This file is part of GDB, GAS, and the GNU binutils. 5a5a4af3bSchristos 6a5a4af3bSchristos GDB, GAS, and the GNU binutils are free software; you can redistribute 7a5a4af3bSchristos them and/or modify them under the terms of the GNU General Public 8a5a4af3bSchristos License as published by the Free Software Foundation; either version 3, 9a5a4af3bSchristos or (at your option) any later version. 10a5a4af3bSchristos 11a5a4af3bSchristos GDB, GAS, and the GNU binutils are distributed in the hope that they 12a5a4af3bSchristos will be useful, but WITHOUT ANY WARRANTY; without even the implied 13a5a4af3bSchristos warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 14a5a4af3bSchristos the GNU General Public License for more details. 15a5a4af3bSchristos 16a5a4af3bSchristos You should have received a copy of the GNU General Public License 17a5a4af3bSchristos along with this file; see the file COPYING3. If not, write to the Free 18a5a4af3bSchristos Software Foundation, 51 Franklin Street - Fifth Floor, Boston, 19a5a4af3bSchristos MA 02110-1301, USA. */ 20a5a4af3bSchristos 21a5a4af3bSchristos #ifndef OPCODE_BFIN_H 22a5a4af3bSchristos #define OPCODE_BFIN_H 23a5a4af3bSchristos 24a5a4af3bSchristos /* Common to all DSP32 instructions. */ 25a5a4af3bSchristos #define BIT_MULTI_INS 0x0800 26a5a4af3bSchristos 27a5a4af3bSchristos /* This just sets the multi instruction bit of a DSP32 instruction. */ 28a5a4af3bSchristos #define SET_MULTI_INSTRUCTION_BIT(x) x->value |= BIT_MULTI_INS; 29a5a4af3bSchristos 30a5a4af3bSchristos 31a5a4af3bSchristos /* DSP instructions (32 bit) */ 32a5a4af3bSchristos 33a5a4af3bSchristos /* mmod field. */ 34a5a4af3bSchristos #define M_S2RND 1 35a5a4af3bSchristos #define M_T 2 36a5a4af3bSchristos #define M_W32 3 37a5a4af3bSchristos #define M_FU 4 38a5a4af3bSchristos #define M_TFU 6 39a5a4af3bSchristos #define M_IS 8 40a5a4af3bSchristos #define M_ISS2 9 41a5a4af3bSchristos #define M_IH 11 42a5a4af3bSchristos #define M_IU 12 43a5a4af3bSchristos 44a5a4af3bSchristos static inline int is_macmod_pmove (int x) 45a5a4af3bSchristos { 46a5a4af3bSchristos return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_S2RND) 47a5a4af3bSchristos || (x == M_ISS2) || (x == M_IU); 48a5a4af3bSchristos } 49a5a4af3bSchristos 50a5a4af3bSchristos static inline int is_macmod_hmove (int x) 51a5a4af3bSchristos { 52a5a4af3bSchristos return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_IU) || (x == M_T) 53a5a4af3bSchristos || (x == M_TFU) || (x == M_S2RND) || (x == M_ISS2) || (x == M_IH); 54a5a4af3bSchristos } 55a5a4af3bSchristos 56a5a4af3bSchristos static inline int is_macmod_signed (int x) 57a5a4af3bSchristos { 58a5a4af3bSchristos return (x == 0) || (x == M_IS) || (x == M_T) || (x == M_S2RND) 59a5a4af3bSchristos || (x == M_ISS2) || (x == M_IH) || (x == M_W32); 60a5a4af3bSchristos } 61a5a4af3bSchristos 62a5a4af3bSchristos /* dsp32mac 63a5a4af3bSchristos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+ 64a5a4af3bSchristos | 1 | 1 | 0 | 0 |.M.| 0 | 0 |.mmod..........|.MM|.P.|.w1|.op1...| 65a5a4af3bSchristos |.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......| 66a5a4af3bSchristos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+ 67a5a4af3bSchristos */ 68a5a4af3bSchristos 69a5a4af3bSchristos typedef struct 70a5a4af3bSchristos { 71a5a4af3bSchristos unsigned long opcode; 72a5a4af3bSchristos int bits_src1; 73a5a4af3bSchristos int mask_src1; 74a5a4af3bSchristos int bits_src0; 75a5a4af3bSchristos int mask_src0; 76a5a4af3bSchristos int bits_dst; 77a5a4af3bSchristos int mask_dst; 78a5a4af3bSchristos int bits_h10; 79a5a4af3bSchristos int mask_h10; 80a5a4af3bSchristos int bits_h00; 81a5a4af3bSchristos int mask_h00; 82a5a4af3bSchristos int bits_op0; 83a5a4af3bSchristos int mask_op0; 84a5a4af3bSchristos int bits_w0; 85a5a4af3bSchristos int mask_w0; 86a5a4af3bSchristos int bits_h11; 87a5a4af3bSchristos int mask_h11; 88a5a4af3bSchristos int bits_h01; 89a5a4af3bSchristos int mask_h01; 90a5a4af3bSchristos int bits_op1; 91a5a4af3bSchristos int mask_op1; 92a5a4af3bSchristos int bits_w1; 93a5a4af3bSchristos int mask_w1; 94a5a4af3bSchristos int bits_P; 95a5a4af3bSchristos int mask_P; 96a5a4af3bSchristos int bits_MM; 97a5a4af3bSchristos int mask_MM; 98a5a4af3bSchristos int bits_mmod; 99a5a4af3bSchristos int mask_mmod; 100a5a4af3bSchristos int bits_code2; 101a5a4af3bSchristos int mask_code2; 102a5a4af3bSchristos int bits_M; 103a5a4af3bSchristos int mask_M; 104a5a4af3bSchristos int bits_code; 105a5a4af3bSchristos int mask_code; 106a5a4af3bSchristos } DSP32Mac; 107a5a4af3bSchristos 108a5a4af3bSchristos #define DSP32Mac_opcode 0xc0000000 109a5a4af3bSchristos #define DSP32Mac_src1_bits 0 110a5a4af3bSchristos #define DSP32Mac_src1_mask 0x7 111a5a4af3bSchristos #define DSP32Mac_src0_bits 3 112a5a4af3bSchristos #define DSP32Mac_src0_mask 0x7 113a5a4af3bSchristos #define DSP32Mac_dst_bits 6 114a5a4af3bSchristos #define DSP32Mac_dst_mask 0x7 115a5a4af3bSchristos #define DSP32Mac_h10_bits 9 116a5a4af3bSchristos #define DSP32Mac_h10_mask 0x1 117a5a4af3bSchristos #define DSP32Mac_h00_bits 10 118a5a4af3bSchristos #define DSP32Mac_h00_mask 0x1 119a5a4af3bSchristos #define DSP32Mac_op0_bits 11 120a5a4af3bSchristos #define DSP32Mac_op0_mask 0x3 121a5a4af3bSchristos #define DSP32Mac_w0_bits 13 122a5a4af3bSchristos #define DSP32Mac_w0_mask 0x1 123a5a4af3bSchristos #define DSP32Mac_h11_bits 14 124a5a4af3bSchristos #define DSP32Mac_h11_mask 0x1 125a5a4af3bSchristos #define DSP32Mac_h01_bits 15 126a5a4af3bSchristos #define DSP32Mac_h01_mask 0x1 127a5a4af3bSchristos #define DSP32Mac_op1_bits 16 128a5a4af3bSchristos #define DSP32Mac_op1_mask 0x3 129a5a4af3bSchristos #define DSP32Mac_w1_bits 18 130a5a4af3bSchristos #define DSP32Mac_w1_mask 0x1 131a5a4af3bSchristos #define DSP32Mac_p_bits 19 132a5a4af3bSchristos #define DSP32Mac_p_mask 0x1 133a5a4af3bSchristos #define DSP32Mac_MM_bits 20 134a5a4af3bSchristos #define DSP32Mac_MM_mask 0x1 135a5a4af3bSchristos #define DSP32Mac_mmod_bits 21 136a5a4af3bSchristos #define DSP32Mac_mmod_mask 0xf 137a5a4af3bSchristos #define DSP32Mac_code2_bits 25 138a5a4af3bSchristos #define DSP32Mac_code2_mask 0x3 139a5a4af3bSchristos #define DSP32Mac_M_bits 27 140a5a4af3bSchristos #define DSP32Mac_M_mask 0x1 141a5a4af3bSchristos #define DSP32Mac_code_bits 28 142a5a4af3bSchristos #define DSP32Mac_code_mask 0xf 143a5a4af3bSchristos 144a5a4af3bSchristos #define init_DSP32Mac \ 145a5a4af3bSchristos { \ 146a5a4af3bSchristos DSP32Mac_opcode, \ 147a5a4af3bSchristos DSP32Mac_src1_bits, DSP32Mac_src1_mask, \ 148a5a4af3bSchristos DSP32Mac_src0_bits, DSP32Mac_src0_mask, \ 149a5a4af3bSchristos DSP32Mac_dst_bits, DSP32Mac_dst_mask, \ 150a5a4af3bSchristos DSP32Mac_h10_bits, DSP32Mac_h10_mask, \ 151a5a4af3bSchristos DSP32Mac_h00_bits, DSP32Mac_h00_mask, \ 152a5a4af3bSchristos DSP32Mac_op0_bits, DSP32Mac_op0_mask, \ 153a5a4af3bSchristos DSP32Mac_w0_bits, DSP32Mac_w0_mask, \ 154a5a4af3bSchristos DSP32Mac_h11_bits, DSP32Mac_h11_mask, \ 155a5a4af3bSchristos DSP32Mac_h01_bits, DSP32Mac_h01_mask, \ 156a5a4af3bSchristos DSP32Mac_op1_bits, DSP32Mac_op1_mask, \ 157a5a4af3bSchristos DSP32Mac_w1_bits, DSP32Mac_w1_mask, \ 158a5a4af3bSchristos DSP32Mac_p_bits, DSP32Mac_p_mask, \ 159a5a4af3bSchristos DSP32Mac_MM_bits, DSP32Mac_MM_mask, \ 160a5a4af3bSchristos DSP32Mac_mmod_bits, DSP32Mac_mmod_mask, \ 161a5a4af3bSchristos DSP32Mac_code2_bits, DSP32Mac_code2_mask, \ 162a5a4af3bSchristos DSP32Mac_M_bits, DSP32Mac_M_mask, \ 163a5a4af3bSchristos DSP32Mac_code_bits, DSP32Mac_code_mask \ 164a5a4af3bSchristos }; 165a5a4af3bSchristos 166a5a4af3bSchristos /* dsp32mult 167a5a4af3bSchristos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+ 168a5a4af3bSchristos | 1 | 1 | 0 | 0 |.M.| 0 | 1 |.mmod..........|.MM|.P.|.w1|.op1...| 169a5a4af3bSchristos |.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......| 170a5a4af3bSchristos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+ 171a5a4af3bSchristos */ 172a5a4af3bSchristos 173a5a4af3bSchristos typedef DSP32Mac DSP32Mult; 174a5a4af3bSchristos #define DSP32Mult_opcode 0xc2000000 175a5a4af3bSchristos 176a5a4af3bSchristos #define init_DSP32Mult \ 177a5a4af3bSchristos { \ 178a5a4af3bSchristos DSP32Mult_opcode, \ 179a5a4af3bSchristos DSP32Mac_src1_bits, DSP32Mac_src1_mask, \ 180a5a4af3bSchristos DSP32Mac_src0_bits, DSP32Mac_src0_mask, \ 181a5a4af3bSchristos DSP32Mac_dst_bits, DSP32Mac_dst_mask, \ 182a5a4af3bSchristos DSP32Mac_h10_bits, DSP32Mac_h10_mask, \ 183a5a4af3bSchristos DSP32Mac_h00_bits, DSP32Mac_h00_mask, \ 184a5a4af3bSchristos DSP32Mac_op0_bits, DSP32Mac_op0_mask, \ 185a5a4af3bSchristos DSP32Mac_w0_bits, DSP32Mac_w0_mask, \ 186a5a4af3bSchristos DSP32Mac_h11_bits, DSP32Mac_h11_mask, \ 187a5a4af3bSchristos DSP32Mac_h01_bits, DSP32Mac_h01_mask, \ 188a5a4af3bSchristos DSP32Mac_op1_bits, DSP32Mac_op1_mask, \ 189a5a4af3bSchristos DSP32Mac_w1_bits, DSP32Mac_w1_mask, \ 190a5a4af3bSchristos DSP32Mac_p_bits, DSP32Mac_p_mask, \ 191a5a4af3bSchristos DSP32Mac_MM_bits, DSP32Mac_MM_mask, \ 192a5a4af3bSchristos DSP32Mac_mmod_bits, DSP32Mac_mmod_mask, \ 193a5a4af3bSchristos DSP32Mac_code2_bits, DSP32Mac_code2_mask, \ 194a5a4af3bSchristos DSP32Mac_M_bits, DSP32Mac_M_mask, \ 195a5a4af3bSchristos DSP32Mac_code_bits, DSP32Mac_code_mask \ 196a5a4af3bSchristos }; 197a5a4af3bSchristos 198a5a4af3bSchristos /* dsp32alu 199a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 200a5a4af3bSchristos | 1 | 1 | 0 | 0 |.M.| 1 | 0 | - | - | - |.HL|.aopcde............| 201a5a4af3bSchristos |.aop...|.s.|.x.|.dst0......|.dst1......|.src0......|.src1......| 202a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 203a5a4af3bSchristos */ 204a5a4af3bSchristos 205a5a4af3bSchristos typedef struct 206a5a4af3bSchristos { 207a5a4af3bSchristos unsigned long opcode; 208a5a4af3bSchristos int bits_src1; 209a5a4af3bSchristos int mask_src1; 210a5a4af3bSchristos int bits_src0; 211a5a4af3bSchristos int mask_src0; 212a5a4af3bSchristos int bits_dst1; 213a5a4af3bSchristos int mask_dst1; 214a5a4af3bSchristos int bits_dst0; 215a5a4af3bSchristos int mask_dst0; 216a5a4af3bSchristos int bits_x; 217a5a4af3bSchristos int mask_x; 218a5a4af3bSchristos int bits_s; 219a5a4af3bSchristos int mask_s; 220a5a4af3bSchristos int bits_aop; 221a5a4af3bSchristos int mask_aop; 222a5a4af3bSchristos int bits_aopcde; 223a5a4af3bSchristos int mask_aopcde; 224a5a4af3bSchristos int bits_HL; 225a5a4af3bSchristos int mask_HL; 226a5a4af3bSchristos int bits_dontcare; 227a5a4af3bSchristos int mask_dontcare; 228a5a4af3bSchristos int bits_code2; 229a5a4af3bSchristos int mask_code2; 230a5a4af3bSchristos int bits_M; 231a5a4af3bSchristos int mask_M; 232a5a4af3bSchristos int bits_code; 233a5a4af3bSchristos int mask_code; 234a5a4af3bSchristos } DSP32Alu; 235a5a4af3bSchristos 236a5a4af3bSchristos #define DSP32Alu_opcode 0xc4000000 237a5a4af3bSchristos #define DSP32Alu_src1_bits 0 238a5a4af3bSchristos #define DSP32Alu_src1_mask 0x7 239a5a4af3bSchristos #define DSP32Alu_src0_bits 3 240a5a4af3bSchristos #define DSP32Alu_src0_mask 0x7 241a5a4af3bSchristos #define DSP32Alu_dst1_bits 6 242a5a4af3bSchristos #define DSP32Alu_dst1_mask 0x7 243a5a4af3bSchristos #define DSP32Alu_dst0_bits 9 244a5a4af3bSchristos #define DSP32Alu_dst0_mask 0x7 245a5a4af3bSchristos #define DSP32Alu_x_bits 12 246a5a4af3bSchristos #define DSP32Alu_x_mask 0x1 247a5a4af3bSchristos #define DSP32Alu_s_bits 13 248a5a4af3bSchristos #define DSP32Alu_s_mask 0x1 249a5a4af3bSchristos #define DSP32Alu_aop_bits 14 250a5a4af3bSchristos #define DSP32Alu_aop_mask 0x3 251a5a4af3bSchristos #define DSP32Alu_aopcde_bits 16 252a5a4af3bSchristos #define DSP32Alu_aopcde_mask 0x1f 253a5a4af3bSchristos #define DSP32Alu_HL_bits 21 254a5a4af3bSchristos #define DSP32Alu_HL_mask 0x1 255a5a4af3bSchristos #define DSP32Alu_dontcare_bits 22 256a5a4af3bSchristos #define DSP32Alu_dontcare_mask 0x7 257a5a4af3bSchristos #define DSP32Alu_code2_bits 25 258a5a4af3bSchristos #define DSP32Alu_code2_mask 0x3 259a5a4af3bSchristos #define DSP32Alu_M_bits 27 260a5a4af3bSchristos #define DSP32Alu_M_mask 0x1 261a5a4af3bSchristos #define DSP32Alu_code_bits 28 262a5a4af3bSchristos #define DSP32Alu_code_mask 0xf 263a5a4af3bSchristos 264a5a4af3bSchristos #define init_DSP32Alu \ 265a5a4af3bSchristos { \ 266a5a4af3bSchristos DSP32Alu_opcode, \ 267a5a4af3bSchristos DSP32Alu_src1_bits, DSP32Alu_src1_mask, \ 268a5a4af3bSchristos DSP32Alu_src0_bits, DSP32Alu_src0_mask, \ 269a5a4af3bSchristos DSP32Alu_dst1_bits, DSP32Alu_dst1_mask, \ 270a5a4af3bSchristos DSP32Alu_dst0_bits, DSP32Alu_dst0_mask, \ 271a5a4af3bSchristos DSP32Alu_x_bits, DSP32Alu_x_mask, \ 272a5a4af3bSchristos DSP32Alu_s_bits, DSP32Alu_s_mask, \ 273a5a4af3bSchristos DSP32Alu_aop_bits, DSP32Alu_aop_mask, \ 274a5a4af3bSchristos DSP32Alu_aopcde_bits, DSP32Alu_aopcde_mask, \ 275a5a4af3bSchristos DSP32Alu_HL_bits, DSP32Alu_HL_mask, \ 276a5a4af3bSchristos DSP32Alu_dontcare_bits, DSP32Alu_dontcare_mask, \ 277a5a4af3bSchristos DSP32Alu_code2_bits, DSP32Alu_code2_mask, \ 278a5a4af3bSchristos DSP32Alu_M_bits, DSP32Alu_M_mask, \ 279a5a4af3bSchristos DSP32Alu_code_bits, DSP32Alu_code_mask \ 280a5a4af3bSchristos }; 281a5a4af3bSchristos 282a5a4af3bSchristos /* dsp32shift 283a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 284a5a4af3bSchristos | 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 0 | - | - |.sopcde............| 285a5a4af3bSchristos |.sop...|.HLs...|.dst0......| - | - | - |.src0......|.src1......| 286a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 287a5a4af3bSchristos */ 288a5a4af3bSchristos 289a5a4af3bSchristos typedef struct 290a5a4af3bSchristos { 291a5a4af3bSchristos unsigned long opcode; 292a5a4af3bSchristos int bits_src1; 293a5a4af3bSchristos int mask_src1; 294a5a4af3bSchristos int bits_src0; 295a5a4af3bSchristos int mask_src0; 296a5a4af3bSchristos int bits_dst1; 297a5a4af3bSchristos int mask_dst1; 298a5a4af3bSchristos int bits_dst0; 299a5a4af3bSchristos int mask_dst0; 300a5a4af3bSchristos int bits_HLs; 301a5a4af3bSchristos int mask_HLs; 302a5a4af3bSchristos int bits_sop; 303a5a4af3bSchristos int mask_sop; 304a5a4af3bSchristos int bits_sopcde; 305a5a4af3bSchristos int mask_sopcde; 306a5a4af3bSchristos int bits_dontcare; 307a5a4af3bSchristos int mask_dontcare; 308a5a4af3bSchristos int bits_code2; 309a5a4af3bSchristos int mask_code2; 310a5a4af3bSchristos int bits_M; 311a5a4af3bSchristos int mask_M; 312a5a4af3bSchristos int bits_code; 313a5a4af3bSchristos int mask_code; 314a5a4af3bSchristos } DSP32Shift; 315a5a4af3bSchristos 316a5a4af3bSchristos #define DSP32Shift_opcode 0xc6000000 317a5a4af3bSchristos #define DSP32Shift_src1_bits 0 318a5a4af3bSchristos #define DSP32Shift_src1_mask 0x7 319a5a4af3bSchristos #define DSP32Shift_src0_bits 3 320a5a4af3bSchristos #define DSP32Shift_src0_mask 0x7 321a5a4af3bSchristos #define DSP32Shift_dst1_bits 6 322a5a4af3bSchristos #define DSP32Shift_dst1_mask 0x7 323a5a4af3bSchristos #define DSP32Shift_dst0_bits 9 324a5a4af3bSchristos #define DSP32Shift_dst0_mask 0x7 325a5a4af3bSchristos #define DSP32Shift_HLs_bits 12 326a5a4af3bSchristos #define DSP32Shift_HLs_mask 0x3 327a5a4af3bSchristos #define DSP32Shift_sop_bits 14 328a5a4af3bSchristos #define DSP32Shift_sop_mask 0x3 329a5a4af3bSchristos #define DSP32Shift_sopcde_bits 16 330a5a4af3bSchristos #define DSP32Shift_sopcde_mask 0x1f 331a5a4af3bSchristos #define DSP32Shift_dontcare_bits 21 332a5a4af3bSchristos #define DSP32Shift_dontcare_mask 0x3 333a5a4af3bSchristos #define DSP32Shift_code2_bits 23 334a5a4af3bSchristos #define DSP32Shift_code2_mask 0xf 335a5a4af3bSchristos #define DSP32Shift_M_bits 27 336a5a4af3bSchristos #define DSP32Shift_M_mask 0x1 337a5a4af3bSchristos #define DSP32Shift_code_bits 28 338a5a4af3bSchristos #define DSP32Shift_code_mask 0xf 339a5a4af3bSchristos 340a5a4af3bSchristos #define init_DSP32Shift \ 341a5a4af3bSchristos { \ 342a5a4af3bSchristos DSP32Shift_opcode, \ 343a5a4af3bSchristos DSP32Shift_src1_bits, DSP32Shift_src1_mask, \ 344a5a4af3bSchristos DSP32Shift_src0_bits, DSP32Shift_src0_mask, \ 345a5a4af3bSchristos DSP32Shift_dst1_bits, DSP32Shift_dst1_mask, \ 346a5a4af3bSchristos DSP32Shift_dst0_bits, DSP32Shift_dst0_mask, \ 347a5a4af3bSchristos DSP32Shift_HLs_bits, DSP32Shift_HLs_mask, \ 348a5a4af3bSchristos DSP32Shift_sop_bits, DSP32Shift_sop_mask, \ 349a5a4af3bSchristos DSP32Shift_sopcde_bits, DSP32Shift_sopcde_mask, \ 350a5a4af3bSchristos DSP32Shift_dontcare_bits, DSP32Shift_dontcare_mask, \ 351a5a4af3bSchristos DSP32Shift_code2_bits, DSP32Shift_code2_mask, \ 352a5a4af3bSchristos DSP32Shift_M_bits, DSP32Shift_M_mask, \ 353a5a4af3bSchristos DSP32Shift_code_bits, DSP32Shift_code_mask \ 354a5a4af3bSchristos }; 355a5a4af3bSchristos 356a5a4af3bSchristos /* dsp32shiftimm 357a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 358a5a4af3bSchristos | 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 1 | - | - |.sopcde............| 359a5a4af3bSchristos |.sop...|.HLs...|.dst0......|.immag.................|.src1......| 360a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 361a5a4af3bSchristos */ 362a5a4af3bSchristos 363a5a4af3bSchristos typedef struct 364a5a4af3bSchristos { 365a5a4af3bSchristos unsigned long opcode; 366a5a4af3bSchristos int bits_src1; 367a5a4af3bSchristos int mask_src1; 368a5a4af3bSchristos int bits_immag; 369a5a4af3bSchristos int mask_immag; 370a5a4af3bSchristos int bits_dst0; 371a5a4af3bSchristos int mask_dst0; 372a5a4af3bSchristos int bits_HLs; 373a5a4af3bSchristos int mask_HLs; 374a5a4af3bSchristos int bits_sop; 375a5a4af3bSchristos int mask_sop; 376a5a4af3bSchristos int bits_sopcde; 377a5a4af3bSchristos int mask_sopcde; 378a5a4af3bSchristos int bits_dontcare; 379a5a4af3bSchristos int mask_dontcare; 380a5a4af3bSchristos int bits_code2; 381a5a4af3bSchristos int mask_code2; 382a5a4af3bSchristos int bits_M; 383a5a4af3bSchristos int mask_M; 384a5a4af3bSchristos int bits_code; 385a5a4af3bSchristos int mask_code; 386a5a4af3bSchristos } DSP32ShiftImm; 387a5a4af3bSchristos 388a5a4af3bSchristos #define DSP32ShiftImm_opcode 0xc6800000 389a5a4af3bSchristos #define DSP32ShiftImm_src1_bits 0 390a5a4af3bSchristos #define DSP32ShiftImm_src1_mask 0x7 391a5a4af3bSchristos #define DSP32ShiftImm_immag_bits 3 392a5a4af3bSchristos #define DSP32ShiftImm_immag_mask 0x3f 393a5a4af3bSchristos #define DSP32ShiftImm_dst0_bits 9 394a5a4af3bSchristos #define DSP32ShiftImm_dst0_mask 0x7 395a5a4af3bSchristos #define DSP32ShiftImm_HLs_bits 12 396a5a4af3bSchristos #define DSP32ShiftImm_HLs_mask 0x3 397a5a4af3bSchristos #define DSP32ShiftImm_sop_bits 14 398a5a4af3bSchristos #define DSP32ShiftImm_sop_mask 0x3 399a5a4af3bSchristos #define DSP32ShiftImm_sopcde_bits 16 400a5a4af3bSchristos #define DSP32ShiftImm_sopcde_mask 0x1f 401a5a4af3bSchristos #define DSP32ShiftImm_dontcare_bits 21 402a5a4af3bSchristos #define DSP32ShiftImm_dontcare_mask 0x3 403a5a4af3bSchristos #define DSP32ShiftImm_code2_bits 23 404a5a4af3bSchristos #define DSP32ShiftImm_code2_mask 0xf 405a5a4af3bSchristos #define DSP32ShiftImm_M_bits 27 406a5a4af3bSchristos #define DSP32ShiftImm_M_mask 0x1 407a5a4af3bSchristos #define DSP32ShiftImm_code_bits 28 408a5a4af3bSchristos #define DSP32ShiftImm_code_mask 0xf 409a5a4af3bSchristos 410a5a4af3bSchristos #define init_DSP32ShiftImm \ 411a5a4af3bSchristos { \ 412a5a4af3bSchristos DSP32ShiftImm_opcode, \ 413a5a4af3bSchristos DSP32ShiftImm_src1_bits, DSP32ShiftImm_src1_mask, \ 414a5a4af3bSchristos DSP32ShiftImm_immag_bits, DSP32ShiftImm_immag_mask, \ 415a5a4af3bSchristos DSP32ShiftImm_dst0_bits, DSP32ShiftImm_dst0_mask, \ 416a5a4af3bSchristos DSP32ShiftImm_HLs_bits, DSP32ShiftImm_HLs_mask, \ 417a5a4af3bSchristos DSP32ShiftImm_sop_bits, DSP32ShiftImm_sop_mask, \ 418a5a4af3bSchristos DSP32ShiftImm_sopcde_bits, DSP32ShiftImm_sopcde_mask, \ 419a5a4af3bSchristos DSP32ShiftImm_dontcare_bits, DSP32ShiftImm_dontcare_mask, \ 420a5a4af3bSchristos DSP32ShiftImm_code2_bits, DSP32ShiftImm_code2_mask, \ 421a5a4af3bSchristos DSP32ShiftImm_M_bits, DSP32ShiftImm_M_mask, \ 422a5a4af3bSchristos DSP32ShiftImm_code_bits, DSP32ShiftImm_code_mask \ 423a5a4af3bSchristos }; 424a5a4af3bSchristos 425a5a4af3bSchristos /* LOAD / STORE */ 426a5a4af3bSchristos 427a5a4af3bSchristos /* LDSTidxI 428a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 429a5a4af3bSchristos | 1 | 1 | 1 | 0 | 0 | 1 |.W.|.Z.|.sz....|.ptr.......|.reg.......| 430a5a4af3bSchristos |.offset........................................................| 431a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 432a5a4af3bSchristos */ 433a5a4af3bSchristos 434a5a4af3bSchristos typedef struct 435a5a4af3bSchristos { 436a5a4af3bSchristos unsigned long opcode; 437a5a4af3bSchristos int bits_offset; 438a5a4af3bSchristos int mask_offset; 439a5a4af3bSchristos int bits_reg; 440a5a4af3bSchristos int mask_reg; 441a5a4af3bSchristos int bits_ptr; 442a5a4af3bSchristos int mask_ptr; 443a5a4af3bSchristos int bits_sz; 444a5a4af3bSchristos int mask_sz; 445a5a4af3bSchristos int bits_Z; 446a5a4af3bSchristos int mask_Z; 447a5a4af3bSchristos int bits_W; 448a5a4af3bSchristos int mask_W; 449a5a4af3bSchristos int bits_code; 450a5a4af3bSchristos int mask_code; 451a5a4af3bSchristos } LDSTidxI; 452a5a4af3bSchristos 453a5a4af3bSchristos #define LDSTidxI_opcode 0xe4000000 454a5a4af3bSchristos #define LDSTidxI_offset_bits 0 455a5a4af3bSchristos #define LDSTidxI_offset_mask 0xffff 456a5a4af3bSchristos #define LDSTidxI_reg_bits 16 457a5a4af3bSchristos #define LDSTidxI_reg_mask 0x7 458a5a4af3bSchristos #define LDSTidxI_ptr_bits 19 459a5a4af3bSchristos #define LDSTidxI_ptr_mask 0x7 460a5a4af3bSchristos #define LDSTidxI_sz_bits 22 461a5a4af3bSchristos #define LDSTidxI_sz_mask 0x3 462a5a4af3bSchristos #define LDSTidxI_Z_bits 24 463a5a4af3bSchristos #define LDSTidxI_Z_mask 0x1 464a5a4af3bSchristos #define LDSTidxI_W_bits 25 465a5a4af3bSchristos #define LDSTidxI_W_mask 0x1 466a5a4af3bSchristos #define LDSTidxI_code_bits 26 467a5a4af3bSchristos #define LDSTidxI_code_mask 0x3f 468a5a4af3bSchristos 469a5a4af3bSchristos #define init_LDSTidxI \ 470a5a4af3bSchristos { \ 471a5a4af3bSchristos LDSTidxI_opcode, \ 472a5a4af3bSchristos LDSTidxI_offset_bits, LDSTidxI_offset_mask, \ 473a5a4af3bSchristos LDSTidxI_reg_bits, LDSTidxI_reg_mask, \ 474a5a4af3bSchristos LDSTidxI_ptr_bits, LDSTidxI_ptr_mask, \ 475a5a4af3bSchristos LDSTidxI_sz_bits, LDSTidxI_sz_mask, \ 476a5a4af3bSchristos LDSTidxI_Z_bits, LDSTidxI_Z_mask, \ 477a5a4af3bSchristos LDSTidxI_W_bits, LDSTidxI_W_mask, \ 478a5a4af3bSchristos LDSTidxI_code_bits, LDSTidxI_code_mask \ 479a5a4af3bSchristos }; 480a5a4af3bSchristos 481a5a4af3bSchristos 482a5a4af3bSchristos /* LDST 483a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 484a5a4af3bSchristos | 1 | 0 | 0 | 1 |.sz....|.W.|.aop...|.Z.|.ptr.......|.reg.......| 485a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 486a5a4af3bSchristos */ 487a5a4af3bSchristos 488a5a4af3bSchristos typedef struct 489a5a4af3bSchristos { 490a5a4af3bSchristos unsigned short opcode; 491a5a4af3bSchristos int bits_reg; 492a5a4af3bSchristos int mask_reg; 493a5a4af3bSchristos int bits_ptr; 494a5a4af3bSchristos int mask_ptr; 495a5a4af3bSchristos int bits_Z; 496a5a4af3bSchristos int mask_Z; 497a5a4af3bSchristos int bits_aop; 498a5a4af3bSchristos int mask_aop; 499a5a4af3bSchristos int bits_W; 500a5a4af3bSchristos int mask_W; 501a5a4af3bSchristos int bits_sz; 502a5a4af3bSchristos int mask_sz; 503a5a4af3bSchristos int bits_code; 504a5a4af3bSchristos int mask_code; 505a5a4af3bSchristos } LDST; 506a5a4af3bSchristos 507a5a4af3bSchristos #define LDST_opcode 0x9000 508a5a4af3bSchristos #define LDST_reg_bits 0 509a5a4af3bSchristos #define LDST_reg_mask 0x7 510a5a4af3bSchristos #define LDST_ptr_bits 3 511a5a4af3bSchristos #define LDST_ptr_mask 0x7 512a5a4af3bSchristos #define LDST_Z_bits 6 513a5a4af3bSchristos #define LDST_Z_mask 0x1 514a5a4af3bSchristos #define LDST_aop_bits 7 515a5a4af3bSchristos #define LDST_aop_mask 0x3 516a5a4af3bSchristos #define LDST_W_bits 9 517a5a4af3bSchristos #define LDST_W_mask 0x1 518a5a4af3bSchristos #define LDST_sz_bits 10 519a5a4af3bSchristos #define LDST_sz_mask 0x3 520a5a4af3bSchristos #define LDST_code_bits 12 521a5a4af3bSchristos #define LDST_code_mask 0xf 522a5a4af3bSchristos 523a5a4af3bSchristos #define init_LDST \ 524a5a4af3bSchristos { \ 525a5a4af3bSchristos LDST_opcode, \ 526a5a4af3bSchristos LDST_reg_bits, LDST_reg_mask, \ 527a5a4af3bSchristos LDST_ptr_bits, LDST_ptr_mask, \ 528a5a4af3bSchristos LDST_Z_bits, LDST_Z_mask, \ 529a5a4af3bSchristos LDST_aop_bits, LDST_aop_mask, \ 530a5a4af3bSchristos LDST_W_bits, LDST_W_mask, \ 531a5a4af3bSchristos LDST_sz_bits, LDST_sz_mask, \ 532a5a4af3bSchristos LDST_code_bits, LDST_code_mask \ 533a5a4af3bSchristos }; 534a5a4af3bSchristos 535a5a4af3bSchristos /* LDSTii 536a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 537a5a4af3bSchristos | 1 | 0 | 1 |.W.|.op....|.offset........|.ptr.......|.reg.......| 538a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 539a5a4af3bSchristos */ 540a5a4af3bSchristos 541a5a4af3bSchristos typedef struct 542a5a4af3bSchristos { 543a5a4af3bSchristos unsigned short opcode; 544a5a4af3bSchristos int bits_reg; 545a5a4af3bSchristos int mask_reg; 546a5a4af3bSchristos int bits_ptr; 547a5a4af3bSchristos int mask_ptr; 548a5a4af3bSchristos int bits_offset; 549a5a4af3bSchristos int mask_offset; 550a5a4af3bSchristos int bits_op; 551a5a4af3bSchristos int mask_op; 552a5a4af3bSchristos int bits_W; 553a5a4af3bSchristos int mask_W; 554a5a4af3bSchristos int bits_code; 555a5a4af3bSchristos int mask_code; 556a5a4af3bSchristos } LDSTii; 557a5a4af3bSchristos 558a5a4af3bSchristos #define LDSTii_opcode 0xa000 559a5a4af3bSchristos #define LDSTii_reg_bit 0 560a5a4af3bSchristos #define LDSTii_reg_mask 0x7 561a5a4af3bSchristos #define LDSTii_ptr_bit 3 562a5a4af3bSchristos #define LDSTii_ptr_mask 0x7 563a5a4af3bSchristos #define LDSTii_offset_bit 6 564a5a4af3bSchristos #define LDSTii_offset_mask 0xf 565a5a4af3bSchristos #define LDSTii_op_bit 10 566a5a4af3bSchristos #define LDSTii_op_mask 0x3 567a5a4af3bSchristos #define LDSTii_W_bit 12 568a5a4af3bSchristos #define LDSTii_W_mask 0x1 569a5a4af3bSchristos #define LDSTii_code_bit 13 570a5a4af3bSchristos #define LDSTii_code_mask 0x7 571a5a4af3bSchristos 572a5a4af3bSchristos #define init_LDSTii \ 573a5a4af3bSchristos { \ 574a5a4af3bSchristos LDSTii_opcode, \ 575a5a4af3bSchristos LDSTii_reg_bit, LDSTii_reg_mask, \ 576a5a4af3bSchristos LDSTii_ptr_bit, LDSTii_ptr_mask, \ 577a5a4af3bSchristos LDSTii_offset_bit, LDSTii_offset_mask, \ 578a5a4af3bSchristos LDSTii_op_bit, LDSTii_op_mask, \ 579a5a4af3bSchristos LDSTii_W_bit, LDSTii_W_mask, \ 580a5a4af3bSchristos LDSTii_code_bit, LDSTii_code_mask \ 581a5a4af3bSchristos }; 582a5a4af3bSchristos 583a5a4af3bSchristos 584a5a4af3bSchristos /* LDSTiiFP 585a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 586a5a4af3bSchristos | 1 | 0 | 1 | 1 | 1 | 0 |.W.|.offset............|.reg...........| 587a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 588a5a4af3bSchristos */ 589a5a4af3bSchristos 590a5a4af3bSchristos typedef struct 591a5a4af3bSchristos { 592a5a4af3bSchristos unsigned short opcode; 593a5a4af3bSchristos int bits_reg; 594a5a4af3bSchristos int mask_reg; 595a5a4af3bSchristos int bits_offset; 596a5a4af3bSchristos int mask_offset; 597a5a4af3bSchristos int bits_W; 598a5a4af3bSchristos int mask_W; 599a5a4af3bSchristos int bits_code; 600a5a4af3bSchristos int mask_code; 601a5a4af3bSchristos } LDSTiiFP; 602a5a4af3bSchristos 603a5a4af3bSchristos #define LDSTiiFP_opcode 0xb800 604a5a4af3bSchristos #define LDSTiiFP_reg_bits 0 605a5a4af3bSchristos #define LDSTiiFP_reg_mask 0xf 606a5a4af3bSchristos #define LDSTiiFP_offset_bits 4 607a5a4af3bSchristos #define LDSTiiFP_offset_mask 0x1f 608a5a4af3bSchristos #define LDSTiiFP_W_bits 9 609a5a4af3bSchristos #define LDSTiiFP_W_mask 0x1 610a5a4af3bSchristos #define LDSTiiFP_code_bits 10 611a5a4af3bSchristos #define LDSTiiFP_code_mask 0x3f 612a5a4af3bSchristos 613a5a4af3bSchristos #define init_LDSTiiFP \ 614a5a4af3bSchristos { \ 615a5a4af3bSchristos LDSTiiFP_opcode, \ 616a5a4af3bSchristos LDSTiiFP_reg_bits, LDSTiiFP_reg_mask, \ 617a5a4af3bSchristos LDSTiiFP_offset_bits, LDSTiiFP_offset_mask, \ 618a5a4af3bSchristos LDSTiiFP_W_bits, LDSTiiFP_W_mask, \ 619a5a4af3bSchristos LDSTiiFP_code_bits, LDSTiiFP_code_mask \ 620a5a4af3bSchristos }; 621a5a4af3bSchristos 622a5a4af3bSchristos /* dspLDST 623a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 624a5a4af3bSchristos | 1 | 0 | 0 | 1 | 1 | 1 |.W.|.aop...|.m.....|.i.....|.reg.......| 625a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 626a5a4af3bSchristos */ 627a5a4af3bSchristos 628a5a4af3bSchristos typedef struct 629a5a4af3bSchristos { 630a5a4af3bSchristos unsigned short opcode; 631a5a4af3bSchristos int bits_reg; 632a5a4af3bSchristos int mask_reg; 633a5a4af3bSchristos int bits_i; 634a5a4af3bSchristos int mask_i; 635a5a4af3bSchristos int bits_m; 636a5a4af3bSchristos int mask_m; 637a5a4af3bSchristos int bits_aop; 638a5a4af3bSchristos int mask_aop; 639a5a4af3bSchristos int bits_W; 640a5a4af3bSchristos int mask_W; 641a5a4af3bSchristos int bits_code; 642a5a4af3bSchristos int mask_code; 643a5a4af3bSchristos } DspLDST; 644a5a4af3bSchristos 645a5a4af3bSchristos #define DspLDST_opcode 0x9c00 646a5a4af3bSchristos #define DspLDST_reg_bits 0 647a5a4af3bSchristos #define DspLDST_reg_mask 0x7 648a5a4af3bSchristos #define DspLDST_i_bits 3 649a5a4af3bSchristos #define DspLDST_i_mask 0x3 650a5a4af3bSchristos #define DspLDST_m_bits 5 651a5a4af3bSchristos #define DspLDST_m_mask 0x3 652a5a4af3bSchristos #define DspLDST_aop_bits 7 653a5a4af3bSchristos #define DspLDST_aop_mask 0x3 654a5a4af3bSchristos #define DspLDST_W_bits 9 655a5a4af3bSchristos #define DspLDST_W_mask 0x1 656a5a4af3bSchristos #define DspLDST_code_bits 10 657a5a4af3bSchristos #define DspLDST_code_mask 0x3f 658a5a4af3bSchristos 659a5a4af3bSchristos #define init_DspLDST \ 660a5a4af3bSchristos { \ 661a5a4af3bSchristos DspLDST_opcode, \ 662a5a4af3bSchristos DspLDST_reg_bits, DspLDST_reg_mask, \ 663a5a4af3bSchristos DspLDST_i_bits, DspLDST_i_mask, \ 664a5a4af3bSchristos DspLDST_m_bits, DspLDST_m_mask, \ 665a5a4af3bSchristos DspLDST_aop_bits, DspLDST_aop_mask, \ 666a5a4af3bSchristos DspLDST_W_bits, DspLDST_W_mask, \ 667a5a4af3bSchristos DspLDST_code_bits, DspLDST_code_mask \ 668a5a4af3bSchristos }; 669a5a4af3bSchristos 670a5a4af3bSchristos 671a5a4af3bSchristos /* LDSTpmod 672a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 673a5a4af3bSchristos | 1 | 0 | 0 | 0 |.W.|.aop...|.reg.......|.idx.......|.ptr.......| 674a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 675a5a4af3bSchristos */ 676a5a4af3bSchristos 677a5a4af3bSchristos typedef struct 678a5a4af3bSchristos { 679a5a4af3bSchristos unsigned short opcode; 680a5a4af3bSchristos int bits_ptr; 681a5a4af3bSchristos int mask_ptr; 682a5a4af3bSchristos int bits_idx; 683a5a4af3bSchristos int mask_idx; 684a5a4af3bSchristos int bits_reg; 685a5a4af3bSchristos int mask_reg; 686a5a4af3bSchristos int bits_aop; 687a5a4af3bSchristos int mask_aop; 688a5a4af3bSchristos int bits_W; 689a5a4af3bSchristos int mask_W; 690a5a4af3bSchristos int bits_code; 691a5a4af3bSchristos int mask_code; 692a5a4af3bSchristos } LDSTpmod; 693a5a4af3bSchristos 694a5a4af3bSchristos #define LDSTpmod_opcode 0x8000 695a5a4af3bSchristos #define LDSTpmod_ptr_bits 0 696a5a4af3bSchristos #define LDSTpmod_ptr_mask 0x7 697a5a4af3bSchristos #define LDSTpmod_idx_bits 3 698a5a4af3bSchristos #define LDSTpmod_idx_mask 0x7 699a5a4af3bSchristos #define LDSTpmod_reg_bits 6 700a5a4af3bSchristos #define LDSTpmod_reg_mask 0x7 701a5a4af3bSchristos #define LDSTpmod_aop_bits 9 702a5a4af3bSchristos #define LDSTpmod_aop_mask 0x3 703a5a4af3bSchristos #define LDSTpmod_W_bits 11 704a5a4af3bSchristos #define LDSTpmod_W_mask 0x1 705a5a4af3bSchristos #define LDSTpmod_code_bits 12 706a5a4af3bSchristos #define LDSTpmod_code_mask 0xf 707a5a4af3bSchristos 708a5a4af3bSchristos #define init_LDSTpmod \ 709a5a4af3bSchristos { \ 710a5a4af3bSchristos LDSTpmod_opcode, \ 711a5a4af3bSchristos LDSTpmod_ptr_bits, LDSTpmod_ptr_mask, \ 712a5a4af3bSchristos LDSTpmod_idx_bits, LDSTpmod_idx_mask, \ 713a5a4af3bSchristos LDSTpmod_reg_bits, LDSTpmod_reg_mask, \ 714a5a4af3bSchristos LDSTpmod_aop_bits, LDSTpmod_aop_mask, \ 715a5a4af3bSchristos LDSTpmod_W_bits, LDSTpmod_W_mask, \ 716a5a4af3bSchristos LDSTpmod_code_bits, LDSTpmod_code_mask \ 717a5a4af3bSchristos }; 718a5a4af3bSchristos 719a5a4af3bSchristos 720a5a4af3bSchristos /* LOGI2op 721a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 722a5a4af3bSchristos | 0 | 1 | 0 | 0 | 1 |.opc.......|.src...............|.dst.......| 723a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 724a5a4af3bSchristos */ 725a5a4af3bSchristos 726a5a4af3bSchristos typedef struct 727a5a4af3bSchristos { 728a5a4af3bSchristos unsigned short opcode; 729a5a4af3bSchristos int bits_dst; 730a5a4af3bSchristos int mask_dst; 731a5a4af3bSchristos int bits_src; 732a5a4af3bSchristos int mask_src; 733a5a4af3bSchristos int bits_opc; 734a5a4af3bSchristos int mask_opc; 735a5a4af3bSchristos int bits_code; 736a5a4af3bSchristos int mask_code; 737a5a4af3bSchristos } LOGI2op; 738a5a4af3bSchristos 739a5a4af3bSchristos #define LOGI2op_opcode 0x4800 740a5a4af3bSchristos #define LOGI2op_dst_bits 0 741a5a4af3bSchristos #define LOGI2op_dst_mask 0x7 742a5a4af3bSchristos #define LOGI2op_src_bits 3 743a5a4af3bSchristos #define LOGI2op_src_mask 0x1f 744a5a4af3bSchristos #define LOGI2op_opc_bits 8 745a5a4af3bSchristos #define LOGI2op_opc_mask 0x7 746a5a4af3bSchristos #define LOGI2op_code_bits 11 747a5a4af3bSchristos #define LOGI2op_code_mask 0x1f 748a5a4af3bSchristos 749a5a4af3bSchristos #define init_LOGI2op \ 750a5a4af3bSchristos { \ 751a5a4af3bSchristos LOGI2op_opcode, \ 752a5a4af3bSchristos LOGI2op_dst_bits, LOGI2op_dst_mask, \ 753a5a4af3bSchristos LOGI2op_src_bits, LOGI2op_src_mask, \ 754a5a4af3bSchristos LOGI2op_opc_bits, LOGI2op_opc_mask, \ 755a5a4af3bSchristos LOGI2op_code_bits, LOGI2op_code_mask \ 756a5a4af3bSchristos }; 757a5a4af3bSchristos 758a5a4af3bSchristos 759a5a4af3bSchristos /* ALU2op 760a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 761a5a4af3bSchristos | 0 | 1 | 0 | 0 | 0 | 0 |.opc...........|.src.......|.dst.......| 762a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 763a5a4af3bSchristos */ 764a5a4af3bSchristos 765a5a4af3bSchristos typedef struct 766a5a4af3bSchristos { 767a5a4af3bSchristos unsigned short opcode; 768a5a4af3bSchristos int bits_dst; 769a5a4af3bSchristos int mask_dst; 770a5a4af3bSchristos int bits_src; 771a5a4af3bSchristos int mask_src; 772a5a4af3bSchristos int bits_opc; 773a5a4af3bSchristos int mask_opc; 774a5a4af3bSchristos int bits_code; 775a5a4af3bSchristos int mask_code; 776a5a4af3bSchristos } ALU2op; 777a5a4af3bSchristos 778a5a4af3bSchristos #define ALU2op_opcode 0x4000 779a5a4af3bSchristos #define ALU2op_dst_bits 0 780a5a4af3bSchristos #define ALU2op_dst_mask 0x7 781a5a4af3bSchristos #define ALU2op_src_bits 3 782a5a4af3bSchristos #define ALU2op_src_mask 0x7 783a5a4af3bSchristos #define ALU2op_opc_bits 6 784a5a4af3bSchristos #define ALU2op_opc_mask 0xf 785a5a4af3bSchristos #define ALU2op_code_bits 10 786a5a4af3bSchristos #define ALU2op_code_mask 0x3f 787a5a4af3bSchristos 788a5a4af3bSchristos #define init_ALU2op \ 789a5a4af3bSchristos { \ 790a5a4af3bSchristos ALU2op_opcode, \ 791a5a4af3bSchristos ALU2op_dst_bits, ALU2op_dst_mask, \ 792a5a4af3bSchristos ALU2op_src_bits, ALU2op_src_mask, \ 793a5a4af3bSchristos ALU2op_opc_bits, ALU2op_opc_mask, \ 794a5a4af3bSchristos ALU2op_code_bits, ALU2op_code_mask \ 795a5a4af3bSchristos }; 796a5a4af3bSchristos 797a5a4af3bSchristos 798a5a4af3bSchristos /* BRCC 799a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 800a5a4af3bSchristos | 0 | 0 | 0 | 1 |.T.|.B.|.offset................................| 801a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 802a5a4af3bSchristos */ 803a5a4af3bSchristos 804a5a4af3bSchristos typedef struct 805a5a4af3bSchristos { 806a5a4af3bSchristos unsigned short opcode; 807a5a4af3bSchristos int bits_offset; 808a5a4af3bSchristos int mask_offset; 809a5a4af3bSchristos int bits_B; 810a5a4af3bSchristos int mask_B; 811a5a4af3bSchristos int bits_T; 812a5a4af3bSchristos int mask_T; 813a5a4af3bSchristos int bits_code; 814a5a4af3bSchristos int mask_code; 815a5a4af3bSchristos } BRCC; 816a5a4af3bSchristos 817a5a4af3bSchristos #define BRCC_opcode 0x1000 818a5a4af3bSchristos #define BRCC_offset_bits 0 819a5a4af3bSchristos #define BRCC_offset_mask 0x3ff 820a5a4af3bSchristos #define BRCC_B_bits 10 821a5a4af3bSchristos #define BRCC_B_mask 0x1 822a5a4af3bSchristos #define BRCC_T_bits 11 823a5a4af3bSchristos #define BRCC_T_mask 0x1 824a5a4af3bSchristos #define BRCC_code_bits 12 825a5a4af3bSchristos #define BRCC_code_mask 0xf 826a5a4af3bSchristos 827a5a4af3bSchristos #define init_BRCC \ 828a5a4af3bSchristos { \ 829a5a4af3bSchristos BRCC_opcode, \ 830a5a4af3bSchristos BRCC_offset_bits, BRCC_offset_mask, \ 831a5a4af3bSchristos BRCC_B_bits, BRCC_B_mask, \ 832a5a4af3bSchristos BRCC_T_bits, BRCC_T_mask, \ 833a5a4af3bSchristos BRCC_code_bits, BRCC_code_mask \ 834a5a4af3bSchristos }; 835a5a4af3bSchristos 836a5a4af3bSchristos 837a5a4af3bSchristos /* UJUMP 838a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 839a5a4af3bSchristos | 0 | 0 | 1 | 0 |.offset........................................| 840a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 841a5a4af3bSchristos */ 842a5a4af3bSchristos 843a5a4af3bSchristos typedef struct 844a5a4af3bSchristos { 845a5a4af3bSchristos unsigned short opcode; 846a5a4af3bSchristos int bits_offset; 847a5a4af3bSchristos int mask_offset; 848a5a4af3bSchristos int bits_code; 849a5a4af3bSchristos int mask_code; 850a5a4af3bSchristos } UJump; 851a5a4af3bSchristos 852a5a4af3bSchristos #define UJump_opcode 0x2000 853a5a4af3bSchristos #define UJump_offset_bits 0 854a5a4af3bSchristos #define UJump_offset_mask 0xfff 855a5a4af3bSchristos #define UJump_code_bits 12 856a5a4af3bSchristos #define UJump_code_mask 0xf 857a5a4af3bSchristos 858a5a4af3bSchristos #define init_UJump \ 859a5a4af3bSchristos { \ 860a5a4af3bSchristos UJump_opcode, \ 861a5a4af3bSchristos UJump_offset_bits, UJump_offset_mask, \ 862a5a4af3bSchristos UJump_code_bits, UJump_code_mask \ 863a5a4af3bSchristos }; 864a5a4af3bSchristos 865a5a4af3bSchristos 866a5a4af3bSchristos /* ProgCtrl 867a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 868a5a4af3bSchristos | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.prgfunc.......|.poprnd........| 869a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 870a5a4af3bSchristos */ 871a5a4af3bSchristos 872a5a4af3bSchristos typedef struct 873a5a4af3bSchristos { 874a5a4af3bSchristos unsigned short opcode; 875a5a4af3bSchristos int bits_poprnd; 876a5a4af3bSchristos int mask_poprnd; 877a5a4af3bSchristos int bits_prgfunc; 878a5a4af3bSchristos int mask_prgfunc; 879a5a4af3bSchristos int bits_code; 880a5a4af3bSchristos int mask_code; 881a5a4af3bSchristos } ProgCtrl; 882a5a4af3bSchristos 883a5a4af3bSchristos #define ProgCtrl_opcode 0x0000 884a5a4af3bSchristos #define ProgCtrl_poprnd_bits 0 885a5a4af3bSchristos #define ProgCtrl_poprnd_mask 0xf 886a5a4af3bSchristos #define ProgCtrl_prgfunc_bits 4 887a5a4af3bSchristos #define ProgCtrl_prgfunc_mask 0xf 888a5a4af3bSchristos #define ProgCtrl_code_bits 8 889a5a4af3bSchristos #define ProgCtrl_code_mask 0xff 890a5a4af3bSchristos 891a5a4af3bSchristos #define init_ProgCtrl \ 892a5a4af3bSchristos { \ 893a5a4af3bSchristos ProgCtrl_opcode, \ 894a5a4af3bSchristos ProgCtrl_poprnd_bits, ProgCtrl_poprnd_mask, \ 895a5a4af3bSchristos ProgCtrl_prgfunc_bits, ProgCtrl_prgfunc_mask, \ 896a5a4af3bSchristos ProgCtrl_code_bits, ProgCtrl_code_mask \ 897a5a4af3bSchristos }; 898a5a4af3bSchristos 899a5a4af3bSchristos /* CALLa 900a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 901a5a4af3bSchristos | 1 | 1 | 1 | 0 | 0 | 0 | 1 |.S.|.msw...........................| 902a5a4af3bSchristos |.lsw...........................................................| 903a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 904a5a4af3bSchristos */ 905a5a4af3bSchristos 906a5a4af3bSchristos 907a5a4af3bSchristos typedef struct 908a5a4af3bSchristos { 909a5a4af3bSchristos unsigned long opcode; 910a5a4af3bSchristos int bits_addr; 911a5a4af3bSchristos int mask_addr; 912a5a4af3bSchristos int bits_S; 913a5a4af3bSchristos int mask_S; 914a5a4af3bSchristos int bits_code; 915a5a4af3bSchristos int mask_code; 916a5a4af3bSchristos } CALLa; 917a5a4af3bSchristos 918a5a4af3bSchristos #define CALLa_opcode 0xe2000000 919a5a4af3bSchristos #define CALLa_addr_bits 0 920a5a4af3bSchristos #define CALLa_addr_mask 0xffffff 921a5a4af3bSchristos #define CALLa_S_bits 24 922a5a4af3bSchristos #define CALLa_S_mask 0x1 923a5a4af3bSchristos #define CALLa_code_bits 25 924a5a4af3bSchristos #define CALLa_code_mask 0x7f 925a5a4af3bSchristos 926a5a4af3bSchristos #define init_CALLa \ 927a5a4af3bSchristos { \ 928a5a4af3bSchristos CALLa_opcode, \ 929a5a4af3bSchristos CALLa_addr_bits, CALLa_addr_mask, \ 930a5a4af3bSchristos CALLa_S_bits, CALLa_S_mask, \ 931a5a4af3bSchristos CALLa_code_bits, CALLa_code_mask \ 932a5a4af3bSchristos }; 933a5a4af3bSchristos 934a5a4af3bSchristos 935a5a4af3bSchristos /* pseudoDEBUG 936a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 937a5a4af3bSchristos | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |.fn....|.grp.......|.reg.......| 938a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 939a5a4af3bSchristos */ 940a5a4af3bSchristos 941a5a4af3bSchristos typedef struct 942a5a4af3bSchristos { 943a5a4af3bSchristos unsigned short opcode; 944a5a4af3bSchristos int bits_reg; 945a5a4af3bSchristos int mask_reg; 946a5a4af3bSchristos int bits_grp; 947a5a4af3bSchristos int mask_grp; 948a5a4af3bSchristos int bits_fn; 949a5a4af3bSchristos int mask_fn; 950a5a4af3bSchristos int bits_code; 951a5a4af3bSchristos int mask_code; 952a5a4af3bSchristos } PseudoDbg; 953a5a4af3bSchristos 954a5a4af3bSchristos #define PseudoDbg_opcode 0xf800 955a5a4af3bSchristos #define PseudoDbg_reg_bits 0 956a5a4af3bSchristos #define PseudoDbg_reg_mask 0x7 957a5a4af3bSchristos #define PseudoDbg_grp_bits 3 958a5a4af3bSchristos #define PseudoDbg_grp_mask 0x7 959a5a4af3bSchristos #define PseudoDbg_fn_bits 6 960a5a4af3bSchristos #define PseudoDbg_fn_mask 0x3 961a5a4af3bSchristos #define PseudoDbg_code_bits 8 962a5a4af3bSchristos #define PseudoDbg_code_mask 0xff 963a5a4af3bSchristos 964a5a4af3bSchristos #define init_PseudoDbg \ 965a5a4af3bSchristos { \ 966a5a4af3bSchristos PseudoDbg_opcode, \ 967a5a4af3bSchristos PseudoDbg_reg_bits, PseudoDbg_reg_mask, \ 968a5a4af3bSchristos PseudoDbg_grp_bits, PseudoDbg_grp_mask, \ 969a5a4af3bSchristos PseudoDbg_fn_bits, PseudoDbg_fn_mask, \ 970a5a4af3bSchristos PseudoDbg_code_bits, PseudoDbg_code_mask \ 971a5a4af3bSchristos }; 972a5a4af3bSchristos 973a5a4af3bSchristos /* PseudoDbg_assert 974a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 975a5a4af3bSchristos | 1 | 1 | 1 | 1 | 0 | - | - | - | dbgop |.grp.......|.regtest...| 976a5a4af3bSchristos |.expected......................................................| 977a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 978a5a4af3bSchristos */ 979a5a4af3bSchristos 980a5a4af3bSchristos typedef struct 981a5a4af3bSchristos { 982a5a4af3bSchristos unsigned long opcode; 983a5a4af3bSchristos int bits_expected; 984a5a4af3bSchristos int mask_expected; 985a5a4af3bSchristos int bits_regtest; 986a5a4af3bSchristos int mask_regtest; 987a5a4af3bSchristos int bits_grp; 988a5a4af3bSchristos int mask_grp; 989a5a4af3bSchristos int bits_dbgop; 990a5a4af3bSchristos int mask_dbgop; 991a5a4af3bSchristos int bits_dontcare; 992a5a4af3bSchristos int mask_dontcare; 993a5a4af3bSchristos int bits_code; 994a5a4af3bSchristos int mask_code; 995a5a4af3bSchristos } PseudoDbg_Assert; 996a5a4af3bSchristos 997a5a4af3bSchristos #define PseudoDbg_Assert_opcode 0xf0000000 998a5a4af3bSchristos #define PseudoDbg_Assert_expected_bits 0 999a5a4af3bSchristos #define PseudoDbg_Assert_expected_mask 0xffff 1000a5a4af3bSchristos #define PseudoDbg_Assert_regtest_bits 16 1001a5a4af3bSchristos #define PseudoDbg_Assert_regtest_mask 0x7 1002a5a4af3bSchristos #define PseudoDbg_Assert_grp_bits 19 1003a5a4af3bSchristos #define PseudoDbg_Assert_grp_mask 0x7 1004a5a4af3bSchristos #define PseudoDbg_Assert_dbgop_bits 22 1005a5a4af3bSchristos #define PseudoDbg_Assert_dbgop_mask 0x3 1006a5a4af3bSchristos #define PseudoDbg_Assert_dontcare_bits 24 1007a5a4af3bSchristos #define PseudoDbg_Assert_dontcare_mask 0x7 1008a5a4af3bSchristos #define PseudoDbg_Assert_code_bits 27 1009a5a4af3bSchristos #define PseudoDbg_Assert_code_mask 0x1f 1010a5a4af3bSchristos 1011a5a4af3bSchristos #define init_PseudoDbg_Assert \ 1012a5a4af3bSchristos { \ 1013a5a4af3bSchristos PseudoDbg_Assert_opcode, \ 1014a5a4af3bSchristos PseudoDbg_Assert_expected_bits, PseudoDbg_Assert_expected_mask, \ 1015a5a4af3bSchristos PseudoDbg_Assert_regtest_bits, PseudoDbg_Assert_regtest_mask, \ 1016a5a4af3bSchristos PseudoDbg_Assert_grp_bits, PseudoDbg_Assert_grp_mask, \ 1017a5a4af3bSchristos PseudoDbg_Assert_dbgop_bits, PseudoDbg_Assert_dbgop_mask, \ 1018a5a4af3bSchristos PseudoDbg_Assert_dontcare_bits, PseudoDbg_Assert_dontcare_mask, \ 1019a5a4af3bSchristos PseudoDbg_Assert_code_bits, PseudoDbg_Assert_code_mask \ 1020a5a4af3bSchristos }; 1021a5a4af3bSchristos 1022a5a4af3bSchristos /* pseudoChr 1023a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1024a5a4af3bSchristos | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |.ch............................| 1025a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1026a5a4af3bSchristos */ 1027a5a4af3bSchristos 1028a5a4af3bSchristos typedef struct 1029a5a4af3bSchristos { 1030a5a4af3bSchristos unsigned short opcode; 1031a5a4af3bSchristos int bits_ch; 1032a5a4af3bSchristos int mask_ch; 1033a5a4af3bSchristos int bits_code; 1034a5a4af3bSchristos int mask_code; 1035a5a4af3bSchristos } PseudoChr; 1036a5a4af3bSchristos 1037a5a4af3bSchristos #define PseudoChr_opcode 0xf900 1038a5a4af3bSchristos #define PseudoChr_ch_bits 0 1039a5a4af3bSchristos #define PseudoChr_ch_mask 0xff 1040a5a4af3bSchristos #define PseudoChr_code_bits 8 1041a5a4af3bSchristos #define PseudoChr_code_mask 0xff 1042a5a4af3bSchristos 1043a5a4af3bSchristos #define init_PseudoChr \ 1044a5a4af3bSchristos { \ 1045a5a4af3bSchristos PseudoChr_opcode, \ 1046a5a4af3bSchristos PseudoChr_ch_bits, PseudoChr_ch_mask, \ 1047a5a4af3bSchristos PseudoChr_code_bits, PseudoChr_code_mask \ 1048a5a4af3bSchristos }; 1049a5a4af3bSchristos 1050a5a4af3bSchristos /* CaCTRL 1051a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1052a5a4af3bSchristos | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |.a.|.op....|.reg.......| 1053a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1054a5a4af3bSchristos */ 1055a5a4af3bSchristos 1056a5a4af3bSchristos typedef struct 1057a5a4af3bSchristos { 1058a5a4af3bSchristos unsigned short opcode; 1059a5a4af3bSchristos int bits_reg; 1060a5a4af3bSchristos int mask_reg; 1061a5a4af3bSchristos int bits_op; 1062a5a4af3bSchristos int mask_op; 1063a5a4af3bSchristos int bits_a; 1064a5a4af3bSchristos int mask_a; 1065a5a4af3bSchristos int bits_code; 1066a5a4af3bSchristos int mask_code; 1067a5a4af3bSchristos } CaCTRL; 1068a5a4af3bSchristos 1069a5a4af3bSchristos #define CaCTRL_opcode 0x0240 1070a5a4af3bSchristos #define CaCTRL_reg_bits 0 1071a5a4af3bSchristos #define CaCTRL_reg_mask 0x7 1072a5a4af3bSchristos #define CaCTRL_op_bits 3 1073a5a4af3bSchristos #define CaCTRL_op_mask 0x3 1074a5a4af3bSchristos #define CaCTRL_a_bits 5 1075a5a4af3bSchristos #define CaCTRL_a_mask 0x1 1076a5a4af3bSchristos #define CaCTRL_code_bits 6 1077a5a4af3bSchristos #define CaCTRL_code_mask 0x3fff 1078a5a4af3bSchristos 1079a5a4af3bSchristos #define init_CaCTRL \ 1080a5a4af3bSchristos { \ 1081a5a4af3bSchristos CaCTRL_opcode, \ 1082a5a4af3bSchristos CaCTRL_reg_bits, CaCTRL_reg_mask, \ 1083a5a4af3bSchristos CaCTRL_op_bits, CaCTRL_op_mask, \ 1084a5a4af3bSchristos CaCTRL_a_bits, CaCTRL_a_mask, \ 1085a5a4af3bSchristos CaCTRL_code_bits, CaCTRL_code_mask \ 1086a5a4af3bSchristos }; 1087a5a4af3bSchristos 1088a5a4af3bSchristos /* PushPopMultiple 1089a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1090a5a4af3bSchristos | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.d.|.p.|.W.|.dr........|.pr........| 1091a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1092a5a4af3bSchristos */ 1093a5a4af3bSchristos 1094a5a4af3bSchristos typedef struct 1095a5a4af3bSchristos { 1096a5a4af3bSchristos unsigned short opcode; 1097a5a4af3bSchristos int bits_pr; 1098a5a4af3bSchristos int mask_pr; 1099a5a4af3bSchristos int bits_dr; 1100a5a4af3bSchristos int mask_dr; 1101a5a4af3bSchristos int bits_W; 1102a5a4af3bSchristos int mask_W; 1103a5a4af3bSchristos int bits_p; 1104a5a4af3bSchristos int mask_p; 1105a5a4af3bSchristos int bits_d; 1106a5a4af3bSchristos int mask_d; 1107a5a4af3bSchristos int bits_code; 1108a5a4af3bSchristos int mask_code; 1109a5a4af3bSchristos } PushPopMultiple; 1110a5a4af3bSchristos 1111a5a4af3bSchristos #define PushPopMultiple_opcode 0x0400 1112a5a4af3bSchristos #define PushPopMultiple_pr_bits 0 1113a5a4af3bSchristos #define PushPopMultiple_pr_mask 0x7 1114a5a4af3bSchristos #define PushPopMultiple_dr_bits 3 1115a5a4af3bSchristos #define PushPopMultiple_dr_mask 0x7 1116a5a4af3bSchristos #define PushPopMultiple_W_bits 6 1117a5a4af3bSchristos #define PushPopMultiple_W_mask 0x1 1118a5a4af3bSchristos #define PushPopMultiple_p_bits 7 1119a5a4af3bSchristos #define PushPopMultiple_p_mask 0x1 1120a5a4af3bSchristos #define PushPopMultiple_d_bits 8 1121a5a4af3bSchristos #define PushPopMultiple_d_mask 0x1 1122a5a4af3bSchristos #define PushPopMultiple_code_bits 8 1123a5a4af3bSchristos #define PushPopMultiple_code_mask 0x1 1124a5a4af3bSchristos 1125a5a4af3bSchristos #define init_PushPopMultiple \ 1126a5a4af3bSchristos { \ 1127a5a4af3bSchristos PushPopMultiple_opcode, \ 1128a5a4af3bSchristos PushPopMultiple_pr_bits, PushPopMultiple_pr_mask, \ 1129a5a4af3bSchristos PushPopMultiple_dr_bits, PushPopMultiple_dr_mask, \ 1130a5a4af3bSchristos PushPopMultiple_W_bits, PushPopMultiple_W_mask, \ 1131a5a4af3bSchristos PushPopMultiple_p_bits, PushPopMultiple_p_mask, \ 1132a5a4af3bSchristos PushPopMultiple_d_bits, PushPopMultiple_d_mask, \ 1133a5a4af3bSchristos PushPopMultiple_code_bits, PushPopMultiple_code_mask \ 1134a5a4af3bSchristos }; 1135a5a4af3bSchristos 1136a5a4af3bSchristos /* PushPopReg 1137a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1138a5a4af3bSchristos | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.W.|.grp.......|.reg.......| 1139a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1140a5a4af3bSchristos */ 1141a5a4af3bSchristos 1142a5a4af3bSchristos typedef struct 1143a5a4af3bSchristos { 1144a5a4af3bSchristos unsigned short opcode; 1145a5a4af3bSchristos int bits_reg; 1146a5a4af3bSchristos int mask_reg; 1147a5a4af3bSchristos int bits_grp; 1148a5a4af3bSchristos int mask_grp; 1149a5a4af3bSchristos int bits_W; 1150a5a4af3bSchristos int mask_W; 1151a5a4af3bSchristos int bits_code; 1152a5a4af3bSchristos int mask_code; 1153a5a4af3bSchristos } PushPopReg; 1154a5a4af3bSchristos 1155a5a4af3bSchristos #define PushPopReg_opcode 0x0100 1156a5a4af3bSchristos #define PushPopReg_reg_bits 0 1157a5a4af3bSchristos #define PushPopReg_reg_mask 0x7 1158a5a4af3bSchristos #define PushPopReg_grp_bits 3 1159a5a4af3bSchristos #define PushPopReg_grp_mask 0x7 1160a5a4af3bSchristos #define PushPopReg_W_bits 6 1161a5a4af3bSchristos #define PushPopReg_W_mask 0x1 1162a5a4af3bSchristos #define PushPopReg_code_bits 7 1163a5a4af3bSchristos #define PushPopReg_code_mask 0x1ff 1164a5a4af3bSchristos 1165a5a4af3bSchristos #define init_PushPopReg \ 1166a5a4af3bSchristos { \ 1167a5a4af3bSchristos PushPopReg_opcode, \ 1168a5a4af3bSchristos PushPopReg_reg_bits, PushPopReg_reg_mask, \ 1169a5a4af3bSchristos PushPopReg_grp_bits, PushPopReg_grp_mask, \ 1170a5a4af3bSchristos PushPopReg_W_bits, PushPopReg_W_mask, \ 1171a5a4af3bSchristos PushPopReg_code_bits, PushPopReg_code_mask, \ 1172a5a4af3bSchristos }; 1173a5a4af3bSchristos 1174a5a4af3bSchristos /* linkage 1175a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1176a5a4af3bSchristos | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.R.| 1177a5a4af3bSchristos |.framesize.....................................................| 1178a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1179a5a4af3bSchristos */ 1180a5a4af3bSchristos 1181a5a4af3bSchristos typedef struct 1182a5a4af3bSchristos { 1183a5a4af3bSchristos unsigned long opcode; 1184a5a4af3bSchristos int bits_framesize; 1185a5a4af3bSchristos int mask_framesize; 1186a5a4af3bSchristos int bits_R; 1187a5a4af3bSchristos int mask_R; 1188a5a4af3bSchristos int bits_code; 1189a5a4af3bSchristos int mask_code; 1190a5a4af3bSchristos } Linkage; 1191a5a4af3bSchristos 1192a5a4af3bSchristos #define Linkage_opcode 0xe8000000 1193a5a4af3bSchristos #define Linkage_framesize_bits 0 1194a5a4af3bSchristos #define Linkage_framesize_mask 0xffff 1195a5a4af3bSchristos #define Linkage_R_bits 16 1196a5a4af3bSchristos #define Linkage_R_mask 0x1 1197a5a4af3bSchristos #define Linkage_code_bits 17 1198a5a4af3bSchristos #define Linkage_code_mask 0x7fff 1199a5a4af3bSchristos 1200a5a4af3bSchristos #define init_Linkage \ 1201a5a4af3bSchristos { \ 1202a5a4af3bSchristos Linkage_opcode, \ 1203a5a4af3bSchristos Linkage_framesize_bits, Linkage_framesize_mask, \ 1204a5a4af3bSchristos Linkage_R_bits, Linkage_R_mask, \ 1205a5a4af3bSchristos Linkage_code_bits, Linkage_code_mask \ 1206a5a4af3bSchristos }; 1207a5a4af3bSchristos 1208a5a4af3bSchristos /* LoopSetup 1209a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1210a5a4af3bSchristos | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |.rop...|.c.|.soffset.......| 1211a5a4af3bSchristos |.reg...........| - | - |.eoffset...............................| 1212a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1213a5a4af3bSchristos */ 1214a5a4af3bSchristos 1215a5a4af3bSchristos typedef struct 1216a5a4af3bSchristos { 1217a5a4af3bSchristos unsigned long opcode; 1218a5a4af3bSchristos int bits_eoffset; 1219a5a4af3bSchristos int mask_eoffset; 1220a5a4af3bSchristos int bits_dontcare; 1221a5a4af3bSchristos int mask_dontcare; 1222a5a4af3bSchristos int bits_reg; 1223a5a4af3bSchristos int mask_reg; 1224a5a4af3bSchristos int bits_soffset; 1225a5a4af3bSchristos int mask_soffset; 1226a5a4af3bSchristos int bits_c; 1227a5a4af3bSchristos int mask_c; 1228a5a4af3bSchristos int bits_rop; 1229a5a4af3bSchristos int mask_rop; 1230a5a4af3bSchristos int bits_code; 1231a5a4af3bSchristos int mask_code; 1232a5a4af3bSchristos } LoopSetup; 1233a5a4af3bSchristos 1234a5a4af3bSchristos #define LoopSetup_opcode 0xe0800000 1235a5a4af3bSchristos #define LoopSetup_eoffset_bits 0 1236a5a4af3bSchristos #define LoopSetup_eoffset_mask 0x3ff 1237a5a4af3bSchristos #define LoopSetup_dontcare_bits 10 1238a5a4af3bSchristos #define LoopSetup_dontcare_mask 0x3 1239a5a4af3bSchristos #define LoopSetup_reg_bits 12 1240a5a4af3bSchristos #define LoopSetup_reg_mask 0xf 1241a5a4af3bSchristos #define LoopSetup_soffset_bits 16 1242a5a4af3bSchristos #define LoopSetup_soffset_mask 0xf 1243a5a4af3bSchristos #define LoopSetup_c_bits 20 1244a5a4af3bSchristos #define LoopSetup_c_mask 0x1 1245a5a4af3bSchristos #define LoopSetup_rop_bits 21 1246a5a4af3bSchristos #define LoopSetup_rop_mask 0x3 1247a5a4af3bSchristos #define LoopSetup_code_bits 23 1248a5a4af3bSchristos #define LoopSetup_code_mask 0x1ff 1249a5a4af3bSchristos 1250a5a4af3bSchristos #define init_LoopSetup \ 1251a5a4af3bSchristos { \ 1252a5a4af3bSchristos LoopSetup_opcode, \ 1253a5a4af3bSchristos LoopSetup_eoffset_bits, LoopSetup_eoffset_mask, \ 1254a5a4af3bSchristos LoopSetup_dontcare_bits, LoopSetup_dontcare_mask, \ 1255a5a4af3bSchristos LoopSetup_reg_bits, LoopSetup_reg_mask, \ 1256a5a4af3bSchristos LoopSetup_soffset_bits, LoopSetup_soffset_mask, \ 1257a5a4af3bSchristos LoopSetup_c_bits, LoopSetup_c_mask, \ 1258a5a4af3bSchristos LoopSetup_rop_bits, LoopSetup_rop_mask, \ 1259a5a4af3bSchristos LoopSetup_code_bits, LoopSetup_code_mask \ 1260a5a4af3bSchristos }; 1261a5a4af3bSchristos 1262a5a4af3bSchristos /* LDIMMhalf 1263a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1264a5a4af3bSchristos | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |.Z.|.H.|.S.|.grp...|.reg.......| 1265a5a4af3bSchristos |.hword.........................................................| 1266a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1267a5a4af3bSchristos */ 1268a5a4af3bSchristos 1269a5a4af3bSchristos typedef struct 1270a5a4af3bSchristos { 1271a5a4af3bSchristos unsigned long opcode; 1272a5a4af3bSchristos int bits_hword; 1273a5a4af3bSchristos int mask_hword; 1274a5a4af3bSchristos int bits_reg; 1275a5a4af3bSchristos int mask_reg; 1276a5a4af3bSchristos int bits_grp; 1277a5a4af3bSchristos int mask_grp; 1278a5a4af3bSchristos int bits_S; 1279a5a4af3bSchristos int mask_S; 1280a5a4af3bSchristos int bits_H; 1281a5a4af3bSchristos int mask_H; 1282a5a4af3bSchristos int bits_Z; 1283a5a4af3bSchristos int mask_Z; 1284a5a4af3bSchristos int bits_code; 1285a5a4af3bSchristos int mask_code; 1286a5a4af3bSchristos } LDIMMhalf; 1287a5a4af3bSchristos 1288a5a4af3bSchristos #define LDIMMhalf_opcode 0xe1000000 1289a5a4af3bSchristos #define LDIMMhalf_hword_bits 0 1290a5a4af3bSchristos #define LDIMMhalf_hword_mask 0xffff 1291a5a4af3bSchristos #define LDIMMhalf_reg_bits 16 1292a5a4af3bSchristos #define LDIMMhalf_reg_mask 0x7 1293a5a4af3bSchristos #define LDIMMhalf_grp_bits 19 1294a5a4af3bSchristos #define LDIMMhalf_grp_mask 0x3 1295a5a4af3bSchristos #define LDIMMhalf_S_bits 21 1296a5a4af3bSchristos #define LDIMMhalf_S_mask 0x1 1297a5a4af3bSchristos #define LDIMMhalf_H_bits 22 1298a5a4af3bSchristos #define LDIMMhalf_H_mask 0x1 1299a5a4af3bSchristos #define LDIMMhalf_Z_bits 23 1300a5a4af3bSchristos #define LDIMMhalf_Z_mask 0x1 1301a5a4af3bSchristos #define LDIMMhalf_code_bits 24 1302a5a4af3bSchristos #define LDIMMhalf_code_mask 0xff 1303a5a4af3bSchristos 1304a5a4af3bSchristos #define init_LDIMMhalf \ 1305a5a4af3bSchristos { \ 1306a5a4af3bSchristos LDIMMhalf_opcode, \ 1307a5a4af3bSchristos LDIMMhalf_hword_bits, LDIMMhalf_hword_mask, \ 1308a5a4af3bSchristos LDIMMhalf_reg_bits, LDIMMhalf_reg_mask, \ 1309a5a4af3bSchristos LDIMMhalf_grp_bits, LDIMMhalf_grp_mask, \ 1310a5a4af3bSchristos LDIMMhalf_S_bits, LDIMMhalf_S_mask, \ 1311a5a4af3bSchristos LDIMMhalf_H_bits, LDIMMhalf_H_mask, \ 1312a5a4af3bSchristos LDIMMhalf_Z_bits, LDIMMhalf_Z_mask, \ 1313a5a4af3bSchristos LDIMMhalf_code_bits, LDIMMhalf_code_mask \ 1314a5a4af3bSchristos }; 1315a5a4af3bSchristos 1316a5a4af3bSchristos 1317a5a4af3bSchristos /* CC2dreg 1318a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1319a5a4af3bSchristos | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |.op....|.reg.......| 1320a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1321a5a4af3bSchristos */ 1322a5a4af3bSchristos 1323a5a4af3bSchristos typedef struct 1324a5a4af3bSchristos { 1325a5a4af3bSchristos unsigned short opcode; 1326a5a4af3bSchristos int bits_reg; 1327a5a4af3bSchristos int mask_reg; 1328a5a4af3bSchristos int bits_op; 1329a5a4af3bSchristos int mask_op; 1330a5a4af3bSchristos int bits_code; 1331a5a4af3bSchristos int mask_code; 1332a5a4af3bSchristos } CC2dreg; 1333a5a4af3bSchristos 1334a5a4af3bSchristos #define CC2dreg_opcode 0x0200 1335a5a4af3bSchristos #define CC2dreg_reg_bits 0 1336a5a4af3bSchristos #define CC2dreg_reg_mask 0x7 1337a5a4af3bSchristos #define CC2dreg_op_bits 3 1338a5a4af3bSchristos #define CC2dreg_op_mask 0x3 1339a5a4af3bSchristos #define CC2dreg_code_bits 5 1340a5a4af3bSchristos #define CC2dreg_code_mask 0x7fff 1341a5a4af3bSchristos 1342a5a4af3bSchristos #define init_CC2dreg \ 1343a5a4af3bSchristos { \ 1344a5a4af3bSchristos CC2dreg_opcode, \ 1345a5a4af3bSchristos CC2dreg_reg_bits, CC2dreg_reg_mask, \ 1346a5a4af3bSchristos CC2dreg_op_bits, CC2dreg_op_mask, \ 1347a5a4af3bSchristos CC2dreg_code_bits, CC2dreg_code_mask \ 1348a5a4af3bSchristos }; 1349a5a4af3bSchristos 1350a5a4af3bSchristos 1351a5a4af3bSchristos /* PTR2op 1352a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1353a5a4af3bSchristos | 0 | 1 | 0 | 0 | 0 | 1 | 0 |.opc.......|.src.......|.dst.......| 1354a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1355a5a4af3bSchristos */ 1356a5a4af3bSchristos 1357a5a4af3bSchristos typedef struct 1358a5a4af3bSchristos { 1359a5a4af3bSchristos unsigned short opcode; 1360a5a4af3bSchristos int bits_dst; 1361a5a4af3bSchristos int mask_dst; 1362a5a4af3bSchristos int bits_src; 1363a5a4af3bSchristos int mask_src; 1364a5a4af3bSchristos int bits_opc; 1365a5a4af3bSchristos int mask_opc; 1366a5a4af3bSchristos int bits_code; 1367a5a4af3bSchristos int mask_code; 1368a5a4af3bSchristos } PTR2op; 1369a5a4af3bSchristos 1370a5a4af3bSchristos #define PTR2op_opcode 0x4400 1371a5a4af3bSchristos #define PTR2op_dst_bits 0 1372a5a4af3bSchristos #define PTR2op_dst_mask 0x7 1373a5a4af3bSchristos #define PTR2op_src_bits 3 1374a5a4af3bSchristos #define PTR2op_src_mask 0x7 1375a5a4af3bSchristos #define PTR2op_opc_bits 6 1376a5a4af3bSchristos #define PTR2op_opc_mask 0x7 1377a5a4af3bSchristos #define PTR2op_code_bits 9 1378a5a4af3bSchristos #define PTR2op_code_mask 0x7f 1379a5a4af3bSchristos 1380a5a4af3bSchristos #define init_PTR2op \ 1381a5a4af3bSchristos { \ 1382a5a4af3bSchristos PTR2op_opcode, \ 1383a5a4af3bSchristos PTR2op_dst_bits, PTR2op_dst_mask, \ 1384a5a4af3bSchristos PTR2op_src_bits, PTR2op_src_mask, \ 1385a5a4af3bSchristos PTR2op_opc_bits, PTR2op_opc_mask, \ 1386a5a4af3bSchristos PTR2op_code_bits, PTR2op_code_mask \ 1387a5a4af3bSchristos }; 1388a5a4af3bSchristos 1389a5a4af3bSchristos 1390a5a4af3bSchristos /* COMP3op 1391a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1392a5a4af3bSchristos | 0 | 1 | 0 | 1 |.opc.......|.dst.......|.src1......|.src0......| 1393a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1394a5a4af3bSchristos */ 1395a5a4af3bSchristos 1396a5a4af3bSchristos typedef struct 1397a5a4af3bSchristos { 1398a5a4af3bSchristos unsigned short opcode; 1399a5a4af3bSchristos int bits_src0; 1400a5a4af3bSchristos int mask_src0; 1401a5a4af3bSchristos int bits_src1; 1402a5a4af3bSchristos int mask_src1; 1403a5a4af3bSchristos int bits_dst; 1404a5a4af3bSchristos int mask_dst; 1405a5a4af3bSchristos int bits_opc; 1406a5a4af3bSchristos int mask_opc; 1407a5a4af3bSchristos int bits_code; 1408a5a4af3bSchristos int mask_code; 1409a5a4af3bSchristos } COMP3op; 1410a5a4af3bSchristos 1411a5a4af3bSchristos #define COMP3op_opcode 0x5000 1412a5a4af3bSchristos #define COMP3op_src0_bits 0 1413a5a4af3bSchristos #define COMP3op_src0_mask 0x7 1414a5a4af3bSchristos #define COMP3op_src1_bits 3 1415a5a4af3bSchristos #define COMP3op_src1_mask 0x7 1416a5a4af3bSchristos #define COMP3op_dst_bits 6 1417a5a4af3bSchristos #define COMP3op_dst_mask 0x7 1418a5a4af3bSchristos #define COMP3op_opc_bits 9 1419a5a4af3bSchristos #define COMP3op_opc_mask 0x7 1420a5a4af3bSchristos #define COMP3op_code_bits 12 1421a5a4af3bSchristos #define COMP3op_code_mask 0xf 1422a5a4af3bSchristos 1423a5a4af3bSchristos #define init_COMP3op \ 1424a5a4af3bSchristos { \ 1425a5a4af3bSchristos COMP3op_opcode, \ 1426a5a4af3bSchristos COMP3op_src0_bits, COMP3op_src0_mask, \ 1427a5a4af3bSchristos COMP3op_src1_bits, COMP3op_src1_mask, \ 1428a5a4af3bSchristos COMP3op_dst_bits, COMP3op_dst_mask, \ 1429a5a4af3bSchristos COMP3op_opc_bits, COMP3op_opc_mask, \ 1430a5a4af3bSchristos COMP3op_code_bits, COMP3op_code_mask \ 1431a5a4af3bSchristos }; 1432a5a4af3bSchristos 1433a5a4af3bSchristos /* ccMV 1434a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1435a5a4af3bSchristos | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.T.|.d.|.s.|.dst.......|.src.......| 1436a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1437a5a4af3bSchristos */ 1438a5a4af3bSchristos 1439a5a4af3bSchristos typedef struct 1440a5a4af3bSchristos { 1441a5a4af3bSchristos unsigned short opcode; 1442a5a4af3bSchristos int bits_src; 1443a5a4af3bSchristos int mask_src; 1444a5a4af3bSchristos int bits_dst; 1445a5a4af3bSchristos int mask_dst; 1446a5a4af3bSchristos int bits_s; 1447a5a4af3bSchristos int mask_s; 1448a5a4af3bSchristos int bits_d; 1449a5a4af3bSchristos int mask_d; 1450a5a4af3bSchristos int bits_T; 1451a5a4af3bSchristos int mask_T; 1452a5a4af3bSchristos int bits_code; 1453a5a4af3bSchristos int mask_code; 1454a5a4af3bSchristos } CCmv; 1455a5a4af3bSchristos 1456a5a4af3bSchristos #define CCmv_opcode 0x0600 1457a5a4af3bSchristos #define CCmv_src_bits 0 1458a5a4af3bSchristos #define CCmv_src_mask 0x7 1459a5a4af3bSchristos #define CCmv_dst_bits 3 1460a5a4af3bSchristos #define CCmv_dst_mask 0x7 1461a5a4af3bSchristos #define CCmv_s_bits 6 1462a5a4af3bSchristos #define CCmv_s_mask 0x1 1463a5a4af3bSchristos #define CCmv_d_bits 7 1464a5a4af3bSchristos #define CCmv_d_mask 0x1 1465a5a4af3bSchristos #define CCmv_T_bits 8 1466a5a4af3bSchristos #define CCmv_T_mask 0x1 1467a5a4af3bSchristos #define CCmv_code_bits 9 1468a5a4af3bSchristos #define CCmv_code_mask 0x7f 1469a5a4af3bSchristos 1470a5a4af3bSchristos #define init_CCmv \ 1471a5a4af3bSchristos { \ 1472a5a4af3bSchristos CCmv_opcode, \ 1473a5a4af3bSchristos CCmv_src_bits, CCmv_src_mask, \ 1474a5a4af3bSchristos CCmv_dst_bits, CCmv_dst_mask, \ 1475a5a4af3bSchristos CCmv_s_bits, CCmv_s_mask, \ 1476a5a4af3bSchristos CCmv_d_bits, CCmv_d_mask, \ 1477a5a4af3bSchristos CCmv_T_bits, CCmv_T_mask, \ 1478a5a4af3bSchristos CCmv_code_bits, CCmv_code_mask \ 1479a5a4af3bSchristos }; 1480a5a4af3bSchristos 1481a5a4af3bSchristos 1482a5a4af3bSchristos /* CCflag 1483a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1484a5a4af3bSchristos | 0 | 0 | 0 | 0 | 1 |.I.|.opc.......|.G.|.y.........|.x.........| 1485a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1486a5a4af3bSchristos */ 1487a5a4af3bSchristos 1488a5a4af3bSchristos typedef struct 1489a5a4af3bSchristos { 1490a5a4af3bSchristos unsigned short opcode; 1491a5a4af3bSchristos int bits_x; 1492a5a4af3bSchristos int mask_x; 1493a5a4af3bSchristos int bits_y; 1494a5a4af3bSchristos int mask_y; 1495a5a4af3bSchristos int bits_G; 1496a5a4af3bSchristos int mask_G; 1497a5a4af3bSchristos int bits_opc; 1498a5a4af3bSchristos int mask_opc; 1499a5a4af3bSchristos int bits_I; 1500a5a4af3bSchristos int mask_I; 1501a5a4af3bSchristos int bits_code; 1502a5a4af3bSchristos int mask_code; 1503a5a4af3bSchristos } CCflag; 1504a5a4af3bSchristos 1505a5a4af3bSchristos #define CCflag_opcode 0x0800 1506a5a4af3bSchristos #define CCflag_x_bits 0 1507a5a4af3bSchristos #define CCflag_x_mask 0x7 1508a5a4af3bSchristos #define CCflag_y_bits 3 1509a5a4af3bSchristos #define CCflag_y_mask 0x7 1510a5a4af3bSchristos #define CCflag_G_bits 6 1511a5a4af3bSchristos #define CCflag_G_mask 0x1 1512a5a4af3bSchristos #define CCflag_opc_bits 7 1513a5a4af3bSchristos #define CCflag_opc_mask 0x7 1514a5a4af3bSchristos #define CCflag_I_bits 10 1515a5a4af3bSchristos #define CCflag_I_mask 0x1 1516a5a4af3bSchristos #define CCflag_code_bits 11 1517a5a4af3bSchristos #define CCflag_code_mask 0x1f 1518a5a4af3bSchristos 1519a5a4af3bSchristos #define init_CCflag \ 1520a5a4af3bSchristos { \ 1521a5a4af3bSchristos CCflag_opcode, \ 1522a5a4af3bSchristos CCflag_x_bits, CCflag_x_mask, \ 1523a5a4af3bSchristos CCflag_y_bits, CCflag_y_mask, \ 1524a5a4af3bSchristos CCflag_G_bits, CCflag_G_mask, \ 1525a5a4af3bSchristos CCflag_opc_bits, CCflag_opc_mask, \ 1526a5a4af3bSchristos CCflag_I_bits, CCflag_I_mask, \ 1527a5a4af3bSchristos CCflag_code_bits, CCflag_code_mask, \ 1528a5a4af3bSchristos }; 1529a5a4af3bSchristos 1530a5a4af3bSchristos 1531a5a4af3bSchristos /* CC2stat 1532a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1533a5a4af3bSchristos | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.D.|.op....|.cbit..............| 1534a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1535a5a4af3bSchristos */ 1536a5a4af3bSchristos 1537a5a4af3bSchristos typedef struct 1538a5a4af3bSchristos { 1539a5a4af3bSchristos unsigned short opcode; 1540a5a4af3bSchristos int bits_cbit; 1541a5a4af3bSchristos int mask_cbit; 1542a5a4af3bSchristos int bits_op; 1543a5a4af3bSchristos int mask_op; 1544a5a4af3bSchristos int bits_D; 1545a5a4af3bSchristos int mask_D; 1546a5a4af3bSchristos int bits_code; 1547a5a4af3bSchristos int mask_code; 1548a5a4af3bSchristos } CC2stat; 1549a5a4af3bSchristos 1550a5a4af3bSchristos #define CC2stat_opcode 0x0300 1551a5a4af3bSchristos #define CC2stat_cbit_bits 0 1552a5a4af3bSchristos #define CC2stat_cbit_mask 0x1f 1553a5a4af3bSchristos #define CC2stat_op_bits 5 1554a5a4af3bSchristos #define CC2stat_op_mask 0x3 1555a5a4af3bSchristos #define CC2stat_D_bits 7 1556a5a4af3bSchristos #define CC2stat_D_mask 0x1 1557a5a4af3bSchristos #define CC2stat_code_bits 8 1558a5a4af3bSchristos #define CC2stat_code_mask 0xff 1559a5a4af3bSchristos 1560a5a4af3bSchristos #define init_CC2stat \ 1561a5a4af3bSchristos { \ 1562a5a4af3bSchristos CC2stat_opcode, \ 1563a5a4af3bSchristos CC2stat_cbit_bits, CC2stat_cbit_mask, \ 1564a5a4af3bSchristos CC2stat_op_bits, CC2stat_op_mask, \ 1565a5a4af3bSchristos CC2stat_D_bits, CC2stat_D_mask, \ 1566a5a4af3bSchristos CC2stat_code_bits, CC2stat_code_mask \ 1567a5a4af3bSchristos }; 1568a5a4af3bSchristos 1569a5a4af3bSchristos 1570a5a4af3bSchristos /* REGMV 1571a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1572a5a4af3bSchristos | 0 | 0 | 1 | 1 |.gd........|.gs........|.dst.......|.src.......| 1573a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1574a5a4af3bSchristos */ 1575a5a4af3bSchristos 1576a5a4af3bSchristos typedef struct 1577a5a4af3bSchristos { 1578a5a4af3bSchristos unsigned short opcode; 1579a5a4af3bSchristos int bits_src; 1580a5a4af3bSchristos int mask_src; 1581a5a4af3bSchristos int bits_dst; 1582a5a4af3bSchristos int mask_dst; 1583a5a4af3bSchristos int bits_gs; 1584a5a4af3bSchristos int mask_gs; 1585a5a4af3bSchristos int bits_gd; 1586a5a4af3bSchristos int mask_gd; 1587a5a4af3bSchristos int bits_code; 1588a5a4af3bSchristos int mask_code; 1589a5a4af3bSchristos } RegMv; 1590a5a4af3bSchristos 1591a5a4af3bSchristos #define RegMv_opcode 0x3000 1592a5a4af3bSchristos #define RegMv_src_bits 0 1593a5a4af3bSchristos #define RegMv_src_mask 0x7 1594a5a4af3bSchristos #define RegMv_dst_bits 3 1595a5a4af3bSchristos #define RegMv_dst_mask 0x7 1596a5a4af3bSchristos #define RegMv_gs_bits 6 1597a5a4af3bSchristos #define RegMv_gs_mask 0x7 1598a5a4af3bSchristos #define RegMv_gd_bits 9 1599a5a4af3bSchristos #define RegMv_gd_mask 0x7 1600a5a4af3bSchristos #define RegMv_code_bits 12 1601a5a4af3bSchristos #define RegMv_code_mask 0xf 1602a5a4af3bSchristos 1603a5a4af3bSchristos #define init_RegMv \ 1604a5a4af3bSchristos { \ 1605a5a4af3bSchristos RegMv_opcode, \ 1606a5a4af3bSchristos RegMv_src_bits, RegMv_src_mask, \ 1607a5a4af3bSchristos RegMv_dst_bits, RegMv_dst_mask, \ 1608a5a4af3bSchristos RegMv_gs_bits, RegMv_gs_mask, \ 1609a5a4af3bSchristos RegMv_gd_bits, RegMv_gd_mask, \ 1610a5a4af3bSchristos RegMv_code_bits, RegMv_code_mask \ 1611a5a4af3bSchristos }; 1612a5a4af3bSchristos 1613a5a4af3bSchristos 1614a5a4af3bSchristos /* COMPI2opD 1615a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1616a5a4af3bSchristos | 0 | 1 | 1 | 0 | 0 |.op|.isrc......................|.dst.......| 1617a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1618a5a4af3bSchristos */ 1619a5a4af3bSchristos 1620a5a4af3bSchristos typedef struct 1621a5a4af3bSchristos { 1622a5a4af3bSchristos unsigned short opcode; 1623a5a4af3bSchristos int bits_dst; 1624a5a4af3bSchristos int mask_dst; 1625a5a4af3bSchristos int bits_src; 1626a5a4af3bSchristos int mask_src; 1627a5a4af3bSchristos int bits_op; 1628a5a4af3bSchristos int mask_op; 1629a5a4af3bSchristos int bits_code; 1630a5a4af3bSchristos int mask_code; 1631a5a4af3bSchristos } COMPI2opD; 1632a5a4af3bSchristos 1633a5a4af3bSchristos #define COMPI2opD_opcode 0x6000 1634a5a4af3bSchristos #define COMPI2opD_dst_bits 0 1635a5a4af3bSchristos #define COMPI2opD_dst_mask 0x7 1636a5a4af3bSchristos #define COMPI2opD_src_bits 3 1637a5a4af3bSchristos #define COMPI2opD_src_mask 0x7f 1638a5a4af3bSchristos #define COMPI2opD_op_bits 10 1639a5a4af3bSchristos #define COMPI2opD_op_mask 0x1 1640a5a4af3bSchristos #define COMPI2opD_code_bits 11 1641a5a4af3bSchristos #define COMPI2opD_code_mask 0x1f 1642a5a4af3bSchristos 1643a5a4af3bSchristos #define init_COMPI2opD \ 1644a5a4af3bSchristos { \ 1645a5a4af3bSchristos COMPI2opD_opcode, \ 1646a5a4af3bSchristos COMPI2opD_dst_bits, COMPI2opD_dst_mask, \ 1647a5a4af3bSchristos COMPI2opD_src_bits, COMPI2opD_src_mask, \ 1648a5a4af3bSchristos COMPI2opD_op_bits, COMPI2opD_op_mask, \ 1649a5a4af3bSchristos COMPI2opD_code_bits, COMPI2opD_code_mask \ 1650a5a4af3bSchristos }; 1651a5a4af3bSchristos 1652a5a4af3bSchristos /* COMPI2opP 1653a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1654a5a4af3bSchristos | 0 | 1 | 1 | 0 | 1 |.op|.src.......................|.dst.......| 1655a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1656a5a4af3bSchristos */ 1657a5a4af3bSchristos 1658a5a4af3bSchristos typedef COMPI2opD COMPI2opP; 1659a5a4af3bSchristos 1660a5a4af3bSchristos #define COMPI2opP_opcode 0x6800 1661a5a4af3bSchristos #define COMPI2opP_dst_bits 0 1662a5a4af3bSchristos #define COMPI2opP_dst_mask 0x7 1663a5a4af3bSchristos #define COMPI2opP_src_bits 3 1664a5a4af3bSchristos #define COMPI2opP_src_mask 0x7f 1665a5a4af3bSchristos #define COMPI2opP_op_bits 10 1666a5a4af3bSchristos #define COMPI2opP_op_mask 0x1 1667a5a4af3bSchristos #define COMPI2opP_code_bits 11 1668a5a4af3bSchristos #define COMPI2opP_code_mask 0x1f 1669a5a4af3bSchristos 1670a5a4af3bSchristos #define init_COMPI2opP \ 1671a5a4af3bSchristos { \ 1672a5a4af3bSchristos COMPI2opP_opcode, \ 1673a5a4af3bSchristos COMPI2opP_dst_bits, COMPI2opP_dst_mask, \ 1674a5a4af3bSchristos COMPI2opP_src_bits, COMPI2opP_src_mask, \ 1675a5a4af3bSchristos COMPI2opP_op_bits, COMPI2opP_op_mask, \ 1676a5a4af3bSchristos COMPI2opP_code_bits, COMPI2opP_code_mask \ 1677a5a4af3bSchristos }; 1678a5a4af3bSchristos 1679a5a4af3bSchristos 1680a5a4af3bSchristos /* dagMODim 1681a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1682a5a4af3bSchristos | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |.br| 1 | 1 |.op|.m.....|.i.....| 1683a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1684a5a4af3bSchristos */ 1685a5a4af3bSchristos 1686a5a4af3bSchristos typedef struct 1687a5a4af3bSchristos { 1688a5a4af3bSchristos unsigned short opcode; 1689a5a4af3bSchristos int bits_i; 1690a5a4af3bSchristos int mask_i; 1691a5a4af3bSchristos int bits_m; 1692a5a4af3bSchristos int mask_m; 1693a5a4af3bSchristos int bits_op; 1694a5a4af3bSchristos int mask_op; 1695a5a4af3bSchristos int bits_code2; 1696a5a4af3bSchristos int mask_code2; 1697a5a4af3bSchristos int bits_br; 1698a5a4af3bSchristos int mask_br; 1699a5a4af3bSchristos int bits_code; 1700a5a4af3bSchristos int mask_code; 1701a5a4af3bSchristos } DagMODim; 1702a5a4af3bSchristos 1703a5a4af3bSchristos #define DagMODim_opcode 0x9e60 1704a5a4af3bSchristos #define DagMODim_i_bits 0 1705a5a4af3bSchristos #define DagMODim_i_mask 0x3 1706a5a4af3bSchristos #define DagMODim_m_bits 2 1707a5a4af3bSchristos #define DagMODim_m_mask 0x3 1708a5a4af3bSchristos #define DagMODim_op_bits 4 1709a5a4af3bSchristos #define DagMODim_op_mask 0x1 1710a5a4af3bSchristos #define DagMODim_code2_bits 5 1711a5a4af3bSchristos #define DagMODim_code2_mask 0x3 1712a5a4af3bSchristos #define DagMODim_br_bits 7 1713a5a4af3bSchristos #define DagMODim_br_mask 0x1 1714a5a4af3bSchristos #define DagMODim_code_bits 8 1715a5a4af3bSchristos #define DagMODim_code_mask 0xff 1716a5a4af3bSchristos 1717a5a4af3bSchristos #define init_DagMODim \ 1718a5a4af3bSchristos { \ 1719a5a4af3bSchristos DagMODim_opcode, \ 1720a5a4af3bSchristos DagMODim_i_bits, DagMODim_i_mask, \ 1721a5a4af3bSchristos DagMODim_m_bits, DagMODim_m_mask, \ 1722a5a4af3bSchristos DagMODim_op_bits, DagMODim_op_mask, \ 1723a5a4af3bSchristos DagMODim_code2_bits, DagMODim_code2_mask, \ 1724a5a4af3bSchristos DagMODim_br_bits, DagMODim_br_mask, \ 1725a5a4af3bSchristos DagMODim_code_bits, DagMODim_code_mask \ 1726a5a4af3bSchristos }; 1727a5a4af3bSchristos 1728a5a4af3bSchristos /* dagMODik 1729a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1730a5a4af3bSchristos | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |.op....|.i.....| 1731a5a4af3bSchristos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ 1732a5a4af3bSchristos */ 1733a5a4af3bSchristos 1734a5a4af3bSchristos typedef struct 1735a5a4af3bSchristos { 1736a5a4af3bSchristos unsigned short opcode; 1737a5a4af3bSchristos int bits_i; 1738a5a4af3bSchristos int mask_i; 1739a5a4af3bSchristos int bits_op; 1740a5a4af3bSchristos int mask_op; 1741a5a4af3bSchristos int bits_code; 1742a5a4af3bSchristos int mask_code; 1743a5a4af3bSchristos } DagMODik; 1744a5a4af3bSchristos 1745a5a4af3bSchristos #define DagMODik_opcode 0x9f60 1746a5a4af3bSchristos #define DagMODik_i_bits 0 1747a5a4af3bSchristos #define DagMODik_i_mask 0x3 1748a5a4af3bSchristos #define DagMODik_op_bits 2 1749a5a4af3bSchristos #define DagMODik_op_mask 0x3 1750a5a4af3bSchristos #define DagMODik_code_bits 3 1751a5a4af3bSchristos #define DagMODik_code_mask 0xfff 1752a5a4af3bSchristos 1753a5a4af3bSchristos #define init_DagMODik \ 1754a5a4af3bSchristos { \ 1755a5a4af3bSchristos DagMODik_opcode, \ 1756a5a4af3bSchristos DagMODik_i_bits, DagMODik_i_mask, \ 1757a5a4af3bSchristos DagMODik_op_bits, DagMODik_op_mask, \ 1758a5a4af3bSchristos DagMODik_code_bits, DagMODik_code_mask \ 1759a5a4af3bSchristos }; 1760a5a4af3bSchristos 1761a5a4af3bSchristos #endif 1762