1761 lines
43 KiB
C
1761 lines
43 KiB
C
/* bfin.h -- Header file for ADI Blackfin opcode table
|
|
Copyright (C) 2005-2022 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB, GAS, and the GNU binutils.
|
|
|
|
GDB, GAS, and the GNU binutils are free software; you can redistribute
|
|
them and/or modify them under the terms of the GNU General Public
|
|
License as published by the Free Software Foundation; either version 3,
|
|
or (at your option) any later version.
|
|
|
|
GDB, GAS, and the GNU binutils are distributed in the hope that they
|
|
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this file; see the file COPYING3. If not, write to the Free
|
|
Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
|
MA 02110-1301, USA. */
|
|
|
|
#ifndef OPCODE_BFIN_H
|
|
#define OPCODE_BFIN_H
|
|
|
|
/* Common to all DSP32 instructions. */
|
|
#define BIT_MULTI_INS 0x0800
|
|
|
|
/* This just sets the multi instruction bit of a DSP32 instruction. */
|
|
#define SET_MULTI_INSTRUCTION_BIT(x) x->value |= BIT_MULTI_INS;
|
|
|
|
|
|
/* DSP instructions (32 bit) */
|
|
|
|
/* mmod field. */
|
|
#define M_S2RND 1
|
|
#define M_T 2
|
|
#define M_W32 3
|
|
#define M_FU 4
|
|
#define M_TFU 6
|
|
#define M_IS 8
|
|
#define M_ISS2 9
|
|
#define M_IH 11
|
|
#define M_IU 12
|
|
|
|
static inline int is_macmod_pmove (int x)
|
|
{
|
|
return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_S2RND)
|
|
|| (x == M_ISS2) || (x == M_IU);
|
|
}
|
|
|
|
static inline int is_macmod_hmove (int x)
|
|
{
|
|
return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_IU) || (x == M_T)
|
|
|| (x == M_TFU) || (x == M_S2RND) || (x == M_ISS2) || (x == M_IH);
|
|
}
|
|
|
|
static inline int is_macmod_signed (int x)
|
|
{
|
|
return (x == 0) || (x == M_IS) || (x == M_T) || (x == M_S2RND)
|
|
|| (x == M_ISS2) || (x == M_IH) || (x == M_W32);
|
|
}
|
|
|
|
/* dsp32mac
|
|
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 0 | 0 |.M.| 0 | 0 |.mmod..........|.MM|.P.|.w1|.op1...|
|
|
|.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
|
|
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_src1;
|
|
int mask_src1;
|
|
int bits_src0;
|
|
int mask_src0;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_h10;
|
|
int mask_h10;
|
|
int bits_h00;
|
|
int mask_h00;
|
|
int bits_op0;
|
|
int mask_op0;
|
|
int bits_w0;
|
|
int mask_w0;
|
|
int bits_h11;
|
|
int mask_h11;
|
|
int bits_h01;
|
|
int mask_h01;
|
|
int bits_op1;
|
|
int mask_op1;
|
|
int bits_w1;
|
|
int mask_w1;
|
|
int bits_P;
|
|
int mask_P;
|
|
int bits_MM;
|
|
int mask_MM;
|
|
int bits_mmod;
|
|
int mask_mmod;
|
|
int bits_code2;
|
|
int mask_code2;
|
|
int bits_M;
|
|
int mask_M;
|
|
int bits_code;
|
|
int mask_code;
|
|
} DSP32Mac;
|
|
|
|
#define DSP32Mac_opcode 0xc0000000
|
|
#define DSP32Mac_src1_bits 0
|
|
#define DSP32Mac_src1_mask 0x7
|
|
#define DSP32Mac_src0_bits 3
|
|
#define DSP32Mac_src0_mask 0x7
|
|
#define DSP32Mac_dst_bits 6
|
|
#define DSP32Mac_dst_mask 0x7
|
|
#define DSP32Mac_h10_bits 9
|
|
#define DSP32Mac_h10_mask 0x1
|
|
#define DSP32Mac_h00_bits 10
|
|
#define DSP32Mac_h00_mask 0x1
|
|
#define DSP32Mac_op0_bits 11
|
|
#define DSP32Mac_op0_mask 0x3
|
|
#define DSP32Mac_w0_bits 13
|
|
#define DSP32Mac_w0_mask 0x1
|
|
#define DSP32Mac_h11_bits 14
|
|
#define DSP32Mac_h11_mask 0x1
|
|
#define DSP32Mac_h01_bits 15
|
|
#define DSP32Mac_h01_mask 0x1
|
|
#define DSP32Mac_op1_bits 16
|
|
#define DSP32Mac_op1_mask 0x3
|
|
#define DSP32Mac_w1_bits 18
|
|
#define DSP32Mac_w1_mask 0x1
|
|
#define DSP32Mac_p_bits 19
|
|
#define DSP32Mac_p_mask 0x1
|
|
#define DSP32Mac_MM_bits 20
|
|
#define DSP32Mac_MM_mask 0x1
|
|
#define DSP32Mac_mmod_bits 21
|
|
#define DSP32Mac_mmod_mask 0xf
|
|
#define DSP32Mac_code2_bits 25
|
|
#define DSP32Mac_code2_mask 0x3
|
|
#define DSP32Mac_M_bits 27
|
|
#define DSP32Mac_M_mask 0x1
|
|
#define DSP32Mac_code_bits 28
|
|
#define DSP32Mac_code_mask 0xf
|
|
|
|
#define init_DSP32Mac \
|
|
{ \
|
|
DSP32Mac_opcode, \
|
|
DSP32Mac_src1_bits, DSP32Mac_src1_mask, \
|
|
DSP32Mac_src0_bits, DSP32Mac_src0_mask, \
|
|
DSP32Mac_dst_bits, DSP32Mac_dst_mask, \
|
|
DSP32Mac_h10_bits, DSP32Mac_h10_mask, \
|
|
DSP32Mac_h00_bits, DSP32Mac_h00_mask, \
|
|
DSP32Mac_op0_bits, DSP32Mac_op0_mask, \
|
|
DSP32Mac_w0_bits, DSP32Mac_w0_mask, \
|
|
DSP32Mac_h11_bits, DSP32Mac_h11_mask, \
|
|
DSP32Mac_h01_bits, DSP32Mac_h01_mask, \
|
|
DSP32Mac_op1_bits, DSP32Mac_op1_mask, \
|
|
DSP32Mac_w1_bits, DSP32Mac_w1_mask, \
|
|
DSP32Mac_p_bits, DSP32Mac_p_mask, \
|
|
DSP32Mac_MM_bits, DSP32Mac_MM_mask, \
|
|
DSP32Mac_mmod_bits, DSP32Mac_mmod_mask, \
|
|
DSP32Mac_code2_bits, DSP32Mac_code2_mask, \
|
|
DSP32Mac_M_bits, DSP32Mac_M_mask, \
|
|
DSP32Mac_code_bits, DSP32Mac_code_mask \
|
|
};
|
|
|
|
/* dsp32mult
|
|
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 0 | 0 |.M.| 0 | 1 |.mmod..........|.MM|.P.|.w1|.op1...|
|
|
|.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
|
|
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef DSP32Mac DSP32Mult;
|
|
#define DSP32Mult_opcode 0xc2000000
|
|
|
|
#define init_DSP32Mult \
|
|
{ \
|
|
DSP32Mult_opcode, \
|
|
DSP32Mac_src1_bits, DSP32Mac_src1_mask, \
|
|
DSP32Mac_src0_bits, DSP32Mac_src0_mask, \
|
|
DSP32Mac_dst_bits, DSP32Mac_dst_mask, \
|
|
DSP32Mac_h10_bits, DSP32Mac_h10_mask, \
|
|
DSP32Mac_h00_bits, DSP32Mac_h00_mask, \
|
|
DSP32Mac_op0_bits, DSP32Mac_op0_mask, \
|
|
DSP32Mac_w0_bits, DSP32Mac_w0_mask, \
|
|
DSP32Mac_h11_bits, DSP32Mac_h11_mask, \
|
|
DSP32Mac_h01_bits, DSP32Mac_h01_mask, \
|
|
DSP32Mac_op1_bits, DSP32Mac_op1_mask, \
|
|
DSP32Mac_w1_bits, DSP32Mac_w1_mask, \
|
|
DSP32Mac_p_bits, DSP32Mac_p_mask, \
|
|
DSP32Mac_MM_bits, DSP32Mac_MM_mask, \
|
|
DSP32Mac_mmod_bits, DSP32Mac_mmod_mask, \
|
|
DSP32Mac_code2_bits, DSP32Mac_code2_mask, \
|
|
DSP32Mac_M_bits, DSP32Mac_M_mask, \
|
|
DSP32Mac_code_bits, DSP32Mac_code_mask \
|
|
};
|
|
|
|
/* dsp32alu
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 0 | 0 |.M.| 1 | 0 | - | - | - |.HL|.aopcde............|
|
|
|.aop...|.s.|.x.|.dst0......|.dst1......|.src0......|.src1......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_src1;
|
|
int mask_src1;
|
|
int bits_src0;
|
|
int mask_src0;
|
|
int bits_dst1;
|
|
int mask_dst1;
|
|
int bits_dst0;
|
|
int mask_dst0;
|
|
int bits_x;
|
|
int mask_x;
|
|
int bits_s;
|
|
int mask_s;
|
|
int bits_aop;
|
|
int mask_aop;
|
|
int bits_aopcde;
|
|
int mask_aopcde;
|
|
int bits_HL;
|
|
int mask_HL;
|
|
int bits_dontcare;
|
|
int mask_dontcare;
|
|
int bits_code2;
|
|
int mask_code2;
|
|
int bits_M;
|
|
int mask_M;
|
|
int bits_code;
|
|
int mask_code;
|
|
} DSP32Alu;
|
|
|
|
#define DSP32Alu_opcode 0xc4000000
|
|
#define DSP32Alu_src1_bits 0
|
|
#define DSP32Alu_src1_mask 0x7
|
|
#define DSP32Alu_src0_bits 3
|
|
#define DSP32Alu_src0_mask 0x7
|
|
#define DSP32Alu_dst1_bits 6
|
|
#define DSP32Alu_dst1_mask 0x7
|
|
#define DSP32Alu_dst0_bits 9
|
|
#define DSP32Alu_dst0_mask 0x7
|
|
#define DSP32Alu_x_bits 12
|
|
#define DSP32Alu_x_mask 0x1
|
|
#define DSP32Alu_s_bits 13
|
|
#define DSP32Alu_s_mask 0x1
|
|
#define DSP32Alu_aop_bits 14
|
|
#define DSP32Alu_aop_mask 0x3
|
|
#define DSP32Alu_aopcde_bits 16
|
|
#define DSP32Alu_aopcde_mask 0x1f
|
|
#define DSP32Alu_HL_bits 21
|
|
#define DSP32Alu_HL_mask 0x1
|
|
#define DSP32Alu_dontcare_bits 22
|
|
#define DSP32Alu_dontcare_mask 0x7
|
|
#define DSP32Alu_code2_bits 25
|
|
#define DSP32Alu_code2_mask 0x3
|
|
#define DSP32Alu_M_bits 27
|
|
#define DSP32Alu_M_mask 0x1
|
|
#define DSP32Alu_code_bits 28
|
|
#define DSP32Alu_code_mask 0xf
|
|
|
|
#define init_DSP32Alu \
|
|
{ \
|
|
DSP32Alu_opcode, \
|
|
DSP32Alu_src1_bits, DSP32Alu_src1_mask, \
|
|
DSP32Alu_src0_bits, DSP32Alu_src0_mask, \
|
|
DSP32Alu_dst1_bits, DSP32Alu_dst1_mask, \
|
|
DSP32Alu_dst0_bits, DSP32Alu_dst0_mask, \
|
|
DSP32Alu_x_bits, DSP32Alu_x_mask, \
|
|
DSP32Alu_s_bits, DSP32Alu_s_mask, \
|
|
DSP32Alu_aop_bits, DSP32Alu_aop_mask, \
|
|
DSP32Alu_aopcde_bits, DSP32Alu_aopcde_mask, \
|
|
DSP32Alu_HL_bits, DSP32Alu_HL_mask, \
|
|
DSP32Alu_dontcare_bits, DSP32Alu_dontcare_mask, \
|
|
DSP32Alu_code2_bits, DSP32Alu_code2_mask, \
|
|
DSP32Alu_M_bits, DSP32Alu_M_mask, \
|
|
DSP32Alu_code_bits, DSP32Alu_code_mask \
|
|
};
|
|
|
|
/* dsp32shift
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 0 | - | - |.sopcde............|
|
|
|.sop...|.HLs...|.dst0......| - | - | - |.src0......|.src1......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_src1;
|
|
int mask_src1;
|
|
int bits_src0;
|
|
int mask_src0;
|
|
int bits_dst1;
|
|
int mask_dst1;
|
|
int bits_dst0;
|
|
int mask_dst0;
|
|
int bits_HLs;
|
|
int mask_HLs;
|
|
int bits_sop;
|
|
int mask_sop;
|
|
int bits_sopcde;
|
|
int mask_sopcde;
|
|
int bits_dontcare;
|
|
int mask_dontcare;
|
|
int bits_code2;
|
|
int mask_code2;
|
|
int bits_M;
|
|
int mask_M;
|
|
int bits_code;
|
|
int mask_code;
|
|
} DSP32Shift;
|
|
|
|
#define DSP32Shift_opcode 0xc6000000
|
|
#define DSP32Shift_src1_bits 0
|
|
#define DSP32Shift_src1_mask 0x7
|
|
#define DSP32Shift_src0_bits 3
|
|
#define DSP32Shift_src0_mask 0x7
|
|
#define DSP32Shift_dst1_bits 6
|
|
#define DSP32Shift_dst1_mask 0x7
|
|
#define DSP32Shift_dst0_bits 9
|
|
#define DSP32Shift_dst0_mask 0x7
|
|
#define DSP32Shift_HLs_bits 12
|
|
#define DSP32Shift_HLs_mask 0x3
|
|
#define DSP32Shift_sop_bits 14
|
|
#define DSP32Shift_sop_mask 0x3
|
|
#define DSP32Shift_sopcde_bits 16
|
|
#define DSP32Shift_sopcde_mask 0x1f
|
|
#define DSP32Shift_dontcare_bits 21
|
|
#define DSP32Shift_dontcare_mask 0x3
|
|
#define DSP32Shift_code2_bits 23
|
|
#define DSP32Shift_code2_mask 0xf
|
|
#define DSP32Shift_M_bits 27
|
|
#define DSP32Shift_M_mask 0x1
|
|
#define DSP32Shift_code_bits 28
|
|
#define DSP32Shift_code_mask 0xf
|
|
|
|
#define init_DSP32Shift \
|
|
{ \
|
|
DSP32Shift_opcode, \
|
|
DSP32Shift_src1_bits, DSP32Shift_src1_mask, \
|
|
DSP32Shift_src0_bits, DSP32Shift_src0_mask, \
|
|
DSP32Shift_dst1_bits, DSP32Shift_dst1_mask, \
|
|
DSP32Shift_dst0_bits, DSP32Shift_dst0_mask, \
|
|
DSP32Shift_HLs_bits, DSP32Shift_HLs_mask, \
|
|
DSP32Shift_sop_bits, DSP32Shift_sop_mask, \
|
|
DSP32Shift_sopcde_bits, DSP32Shift_sopcde_mask, \
|
|
DSP32Shift_dontcare_bits, DSP32Shift_dontcare_mask, \
|
|
DSP32Shift_code2_bits, DSP32Shift_code2_mask, \
|
|
DSP32Shift_M_bits, DSP32Shift_M_mask, \
|
|
DSP32Shift_code_bits, DSP32Shift_code_mask \
|
|
};
|
|
|
|
/* dsp32shiftimm
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 1 | - | - |.sopcde............|
|
|
|.sop...|.HLs...|.dst0......|.immag.................|.src1......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_src1;
|
|
int mask_src1;
|
|
int bits_immag;
|
|
int mask_immag;
|
|
int bits_dst0;
|
|
int mask_dst0;
|
|
int bits_HLs;
|
|
int mask_HLs;
|
|
int bits_sop;
|
|
int mask_sop;
|
|
int bits_sopcde;
|
|
int mask_sopcde;
|
|
int bits_dontcare;
|
|
int mask_dontcare;
|
|
int bits_code2;
|
|
int mask_code2;
|
|
int bits_M;
|
|
int mask_M;
|
|
int bits_code;
|
|
int mask_code;
|
|
} DSP32ShiftImm;
|
|
|
|
#define DSP32ShiftImm_opcode 0xc6800000
|
|
#define DSP32ShiftImm_src1_bits 0
|
|
#define DSP32ShiftImm_src1_mask 0x7
|
|
#define DSP32ShiftImm_immag_bits 3
|
|
#define DSP32ShiftImm_immag_mask 0x3f
|
|
#define DSP32ShiftImm_dst0_bits 9
|
|
#define DSP32ShiftImm_dst0_mask 0x7
|
|
#define DSP32ShiftImm_HLs_bits 12
|
|
#define DSP32ShiftImm_HLs_mask 0x3
|
|
#define DSP32ShiftImm_sop_bits 14
|
|
#define DSP32ShiftImm_sop_mask 0x3
|
|
#define DSP32ShiftImm_sopcde_bits 16
|
|
#define DSP32ShiftImm_sopcde_mask 0x1f
|
|
#define DSP32ShiftImm_dontcare_bits 21
|
|
#define DSP32ShiftImm_dontcare_mask 0x3
|
|
#define DSP32ShiftImm_code2_bits 23
|
|
#define DSP32ShiftImm_code2_mask 0xf
|
|
#define DSP32ShiftImm_M_bits 27
|
|
#define DSP32ShiftImm_M_mask 0x1
|
|
#define DSP32ShiftImm_code_bits 28
|
|
#define DSP32ShiftImm_code_mask 0xf
|
|
|
|
#define init_DSP32ShiftImm \
|
|
{ \
|
|
DSP32ShiftImm_opcode, \
|
|
DSP32ShiftImm_src1_bits, DSP32ShiftImm_src1_mask, \
|
|
DSP32ShiftImm_immag_bits, DSP32ShiftImm_immag_mask, \
|
|
DSP32ShiftImm_dst0_bits, DSP32ShiftImm_dst0_mask, \
|
|
DSP32ShiftImm_HLs_bits, DSP32ShiftImm_HLs_mask, \
|
|
DSP32ShiftImm_sop_bits, DSP32ShiftImm_sop_mask, \
|
|
DSP32ShiftImm_sopcde_bits, DSP32ShiftImm_sopcde_mask, \
|
|
DSP32ShiftImm_dontcare_bits, DSP32ShiftImm_dontcare_mask, \
|
|
DSP32ShiftImm_code2_bits, DSP32ShiftImm_code2_mask, \
|
|
DSP32ShiftImm_M_bits, DSP32ShiftImm_M_mask, \
|
|
DSP32ShiftImm_code_bits, DSP32ShiftImm_code_mask \
|
|
};
|
|
|
|
/* LOAD / STORE */
|
|
|
|
/* LDSTidxI
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 0 | 0 | 1 |.W.|.Z.|.sz....|.ptr.......|.reg.......|
|
|
|.offset........................................................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_offset;
|
|
int mask_offset;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_ptr;
|
|
int mask_ptr;
|
|
int bits_sz;
|
|
int mask_sz;
|
|
int bits_Z;
|
|
int mask_Z;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LDSTidxI;
|
|
|
|
#define LDSTidxI_opcode 0xe4000000
|
|
#define LDSTidxI_offset_bits 0
|
|
#define LDSTidxI_offset_mask 0xffff
|
|
#define LDSTidxI_reg_bits 16
|
|
#define LDSTidxI_reg_mask 0x7
|
|
#define LDSTidxI_ptr_bits 19
|
|
#define LDSTidxI_ptr_mask 0x7
|
|
#define LDSTidxI_sz_bits 22
|
|
#define LDSTidxI_sz_mask 0x3
|
|
#define LDSTidxI_Z_bits 24
|
|
#define LDSTidxI_Z_mask 0x1
|
|
#define LDSTidxI_W_bits 25
|
|
#define LDSTidxI_W_mask 0x1
|
|
#define LDSTidxI_code_bits 26
|
|
#define LDSTidxI_code_mask 0x3f
|
|
|
|
#define init_LDSTidxI \
|
|
{ \
|
|
LDSTidxI_opcode, \
|
|
LDSTidxI_offset_bits, LDSTidxI_offset_mask, \
|
|
LDSTidxI_reg_bits, LDSTidxI_reg_mask, \
|
|
LDSTidxI_ptr_bits, LDSTidxI_ptr_mask, \
|
|
LDSTidxI_sz_bits, LDSTidxI_sz_mask, \
|
|
LDSTidxI_Z_bits, LDSTidxI_Z_mask, \
|
|
LDSTidxI_W_bits, LDSTidxI_W_mask, \
|
|
LDSTidxI_code_bits, LDSTidxI_code_mask \
|
|
};
|
|
|
|
|
|
/* LDST
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 0 | 0 | 1 |.sz....|.W.|.aop...|.Z.|.ptr.......|.reg.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_ptr;
|
|
int mask_ptr;
|
|
int bits_Z;
|
|
int mask_Z;
|
|
int bits_aop;
|
|
int mask_aop;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_sz;
|
|
int mask_sz;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LDST;
|
|
|
|
#define LDST_opcode 0x9000
|
|
#define LDST_reg_bits 0
|
|
#define LDST_reg_mask 0x7
|
|
#define LDST_ptr_bits 3
|
|
#define LDST_ptr_mask 0x7
|
|
#define LDST_Z_bits 6
|
|
#define LDST_Z_mask 0x1
|
|
#define LDST_aop_bits 7
|
|
#define LDST_aop_mask 0x3
|
|
#define LDST_W_bits 9
|
|
#define LDST_W_mask 0x1
|
|
#define LDST_sz_bits 10
|
|
#define LDST_sz_mask 0x3
|
|
#define LDST_code_bits 12
|
|
#define LDST_code_mask 0xf
|
|
|
|
#define init_LDST \
|
|
{ \
|
|
LDST_opcode, \
|
|
LDST_reg_bits, LDST_reg_mask, \
|
|
LDST_ptr_bits, LDST_ptr_mask, \
|
|
LDST_Z_bits, LDST_Z_mask, \
|
|
LDST_aop_bits, LDST_aop_mask, \
|
|
LDST_W_bits, LDST_W_mask, \
|
|
LDST_sz_bits, LDST_sz_mask, \
|
|
LDST_code_bits, LDST_code_mask \
|
|
};
|
|
|
|
/* LDSTii
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 0 | 1 |.W.|.op....|.offset........|.ptr.......|.reg.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_ptr;
|
|
int mask_ptr;
|
|
int bits_offset;
|
|
int mask_offset;
|
|
int bits_op;
|
|
int mask_op;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LDSTii;
|
|
|
|
#define LDSTii_opcode 0xa000
|
|
#define LDSTii_reg_bit 0
|
|
#define LDSTii_reg_mask 0x7
|
|
#define LDSTii_ptr_bit 3
|
|
#define LDSTii_ptr_mask 0x7
|
|
#define LDSTii_offset_bit 6
|
|
#define LDSTii_offset_mask 0xf
|
|
#define LDSTii_op_bit 10
|
|
#define LDSTii_op_mask 0x3
|
|
#define LDSTii_W_bit 12
|
|
#define LDSTii_W_mask 0x1
|
|
#define LDSTii_code_bit 13
|
|
#define LDSTii_code_mask 0x7
|
|
|
|
#define init_LDSTii \
|
|
{ \
|
|
LDSTii_opcode, \
|
|
LDSTii_reg_bit, LDSTii_reg_mask, \
|
|
LDSTii_ptr_bit, LDSTii_ptr_mask, \
|
|
LDSTii_offset_bit, LDSTii_offset_mask, \
|
|
LDSTii_op_bit, LDSTii_op_mask, \
|
|
LDSTii_W_bit, LDSTii_W_mask, \
|
|
LDSTii_code_bit, LDSTii_code_mask \
|
|
};
|
|
|
|
|
|
/* LDSTiiFP
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 0 | 1 | 1 | 1 | 0 |.W.|.offset............|.reg...........|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_offset;
|
|
int mask_offset;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LDSTiiFP;
|
|
|
|
#define LDSTiiFP_opcode 0xb800
|
|
#define LDSTiiFP_reg_bits 0
|
|
#define LDSTiiFP_reg_mask 0xf
|
|
#define LDSTiiFP_offset_bits 4
|
|
#define LDSTiiFP_offset_mask 0x1f
|
|
#define LDSTiiFP_W_bits 9
|
|
#define LDSTiiFP_W_mask 0x1
|
|
#define LDSTiiFP_code_bits 10
|
|
#define LDSTiiFP_code_mask 0x3f
|
|
|
|
#define init_LDSTiiFP \
|
|
{ \
|
|
LDSTiiFP_opcode, \
|
|
LDSTiiFP_reg_bits, LDSTiiFP_reg_mask, \
|
|
LDSTiiFP_offset_bits, LDSTiiFP_offset_mask, \
|
|
LDSTiiFP_W_bits, LDSTiiFP_W_mask, \
|
|
LDSTiiFP_code_bits, LDSTiiFP_code_mask \
|
|
};
|
|
|
|
/* dspLDST
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 0 | 0 | 1 | 1 | 1 |.W.|.aop...|.m.....|.i.....|.reg.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_i;
|
|
int mask_i;
|
|
int bits_m;
|
|
int mask_m;
|
|
int bits_aop;
|
|
int mask_aop;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_code;
|
|
int mask_code;
|
|
} DspLDST;
|
|
|
|
#define DspLDST_opcode 0x9c00
|
|
#define DspLDST_reg_bits 0
|
|
#define DspLDST_reg_mask 0x7
|
|
#define DspLDST_i_bits 3
|
|
#define DspLDST_i_mask 0x3
|
|
#define DspLDST_m_bits 5
|
|
#define DspLDST_m_mask 0x3
|
|
#define DspLDST_aop_bits 7
|
|
#define DspLDST_aop_mask 0x3
|
|
#define DspLDST_W_bits 9
|
|
#define DspLDST_W_mask 0x1
|
|
#define DspLDST_code_bits 10
|
|
#define DspLDST_code_mask 0x3f
|
|
|
|
#define init_DspLDST \
|
|
{ \
|
|
DspLDST_opcode, \
|
|
DspLDST_reg_bits, DspLDST_reg_mask, \
|
|
DspLDST_i_bits, DspLDST_i_mask, \
|
|
DspLDST_m_bits, DspLDST_m_mask, \
|
|
DspLDST_aop_bits, DspLDST_aop_mask, \
|
|
DspLDST_W_bits, DspLDST_W_mask, \
|
|
DspLDST_code_bits, DspLDST_code_mask \
|
|
};
|
|
|
|
|
|
/* LDSTpmod
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 0 | 0 | 0 |.W.|.aop...|.reg.......|.idx.......|.ptr.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_ptr;
|
|
int mask_ptr;
|
|
int bits_idx;
|
|
int mask_idx;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_aop;
|
|
int mask_aop;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LDSTpmod;
|
|
|
|
#define LDSTpmod_opcode 0x8000
|
|
#define LDSTpmod_ptr_bits 0
|
|
#define LDSTpmod_ptr_mask 0x7
|
|
#define LDSTpmod_idx_bits 3
|
|
#define LDSTpmod_idx_mask 0x7
|
|
#define LDSTpmod_reg_bits 6
|
|
#define LDSTpmod_reg_mask 0x7
|
|
#define LDSTpmod_aop_bits 9
|
|
#define LDSTpmod_aop_mask 0x3
|
|
#define LDSTpmod_W_bits 11
|
|
#define LDSTpmod_W_mask 0x1
|
|
#define LDSTpmod_code_bits 12
|
|
#define LDSTpmod_code_mask 0xf
|
|
|
|
#define init_LDSTpmod \
|
|
{ \
|
|
LDSTpmod_opcode, \
|
|
LDSTpmod_ptr_bits, LDSTpmod_ptr_mask, \
|
|
LDSTpmod_idx_bits, LDSTpmod_idx_mask, \
|
|
LDSTpmod_reg_bits, LDSTpmod_reg_mask, \
|
|
LDSTpmod_aop_bits, LDSTpmod_aop_mask, \
|
|
LDSTpmod_W_bits, LDSTpmod_W_mask, \
|
|
LDSTpmod_code_bits, LDSTpmod_code_mask \
|
|
};
|
|
|
|
|
|
/* LOGI2op
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 1 | 0 | 0 | 1 |.opc.......|.src...............|.dst.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_src;
|
|
int mask_src;
|
|
int bits_opc;
|
|
int mask_opc;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LOGI2op;
|
|
|
|
#define LOGI2op_opcode 0x4800
|
|
#define LOGI2op_dst_bits 0
|
|
#define LOGI2op_dst_mask 0x7
|
|
#define LOGI2op_src_bits 3
|
|
#define LOGI2op_src_mask 0x1f
|
|
#define LOGI2op_opc_bits 8
|
|
#define LOGI2op_opc_mask 0x7
|
|
#define LOGI2op_code_bits 11
|
|
#define LOGI2op_code_mask 0x1f
|
|
|
|
#define init_LOGI2op \
|
|
{ \
|
|
LOGI2op_opcode, \
|
|
LOGI2op_dst_bits, LOGI2op_dst_mask, \
|
|
LOGI2op_src_bits, LOGI2op_src_mask, \
|
|
LOGI2op_opc_bits, LOGI2op_opc_mask, \
|
|
LOGI2op_code_bits, LOGI2op_code_mask \
|
|
};
|
|
|
|
|
|
/* ALU2op
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 1 | 0 | 0 | 0 | 0 |.opc...........|.src.......|.dst.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_src;
|
|
int mask_src;
|
|
int bits_opc;
|
|
int mask_opc;
|
|
int bits_code;
|
|
int mask_code;
|
|
} ALU2op;
|
|
|
|
#define ALU2op_opcode 0x4000
|
|
#define ALU2op_dst_bits 0
|
|
#define ALU2op_dst_mask 0x7
|
|
#define ALU2op_src_bits 3
|
|
#define ALU2op_src_mask 0x7
|
|
#define ALU2op_opc_bits 6
|
|
#define ALU2op_opc_mask 0xf
|
|
#define ALU2op_code_bits 10
|
|
#define ALU2op_code_mask 0x3f
|
|
|
|
#define init_ALU2op \
|
|
{ \
|
|
ALU2op_opcode, \
|
|
ALU2op_dst_bits, ALU2op_dst_mask, \
|
|
ALU2op_src_bits, ALU2op_src_mask, \
|
|
ALU2op_opc_bits, ALU2op_opc_mask, \
|
|
ALU2op_code_bits, ALU2op_code_mask \
|
|
};
|
|
|
|
|
|
/* BRCC
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 1 |.T.|.B.|.offset................................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_offset;
|
|
int mask_offset;
|
|
int bits_B;
|
|
int mask_B;
|
|
int bits_T;
|
|
int mask_T;
|
|
int bits_code;
|
|
int mask_code;
|
|
} BRCC;
|
|
|
|
#define BRCC_opcode 0x1000
|
|
#define BRCC_offset_bits 0
|
|
#define BRCC_offset_mask 0x3ff
|
|
#define BRCC_B_bits 10
|
|
#define BRCC_B_mask 0x1
|
|
#define BRCC_T_bits 11
|
|
#define BRCC_T_mask 0x1
|
|
#define BRCC_code_bits 12
|
|
#define BRCC_code_mask 0xf
|
|
|
|
#define init_BRCC \
|
|
{ \
|
|
BRCC_opcode, \
|
|
BRCC_offset_bits, BRCC_offset_mask, \
|
|
BRCC_B_bits, BRCC_B_mask, \
|
|
BRCC_T_bits, BRCC_T_mask, \
|
|
BRCC_code_bits, BRCC_code_mask \
|
|
};
|
|
|
|
|
|
/* UJUMP
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 1 | 0 |.offset........................................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_offset;
|
|
int mask_offset;
|
|
int bits_code;
|
|
int mask_code;
|
|
} UJump;
|
|
|
|
#define UJump_opcode 0x2000
|
|
#define UJump_offset_bits 0
|
|
#define UJump_offset_mask 0xfff
|
|
#define UJump_code_bits 12
|
|
#define UJump_code_mask 0xf
|
|
|
|
#define init_UJump \
|
|
{ \
|
|
UJump_opcode, \
|
|
UJump_offset_bits, UJump_offset_mask, \
|
|
UJump_code_bits, UJump_code_mask \
|
|
};
|
|
|
|
|
|
/* ProgCtrl
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.prgfunc.......|.poprnd........|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_poprnd;
|
|
int mask_poprnd;
|
|
int bits_prgfunc;
|
|
int mask_prgfunc;
|
|
int bits_code;
|
|
int mask_code;
|
|
} ProgCtrl;
|
|
|
|
#define ProgCtrl_opcode 0x0000
|
|
#define ProgCtrl_poprnd_bits 0
|
|
#define ProgCtrl_poprnd_mask 0xf
|
|
#define ProgCtrl_prgfunc_bits 4
|
|
#define ProgCtrl_prgfunc_mask 0xf
|
|
#define ProgCtrl_code_bits 8
|
|
#define ProgCtrl_code_mask 0xff
|
|
|
|
#define init_ProgCtrl \
|
|
{ \
|
|
ProgCtrl_opcode, \
|
|
ProgCtrl_poprnd_bits, ProgCtrl_poprnd_mask, \
|
|
ProgCtrl_prgfunc_bits, ProgCtrl_prgfunc_mask, \
|
|
ProgCtrl_code_bits, ProgCtrl_code_mask \
|
|
};
|
|
|
|
/* CALLa
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 0 | 0 | 0 | 1 |.S.|.msw...........................|
|
|
|.lsw...........................................................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_addr;
|
|
int mask_addr;
|
|
int bits_S;
|
|
int mask_S;
|
|
int bits_code;
|
|
int mask_code;
|
|
} CALLa;
|
|
|
|
#define CALLa_opcode 0xe2000000
|
|
#define CALLa_addr_bits 0
|
|
#define CALLa_addr_mask 0xffffff
|
|
#define CALLa_S_bits 24
|
|
#define CALLa_S_mask 0x1
|
|
#define CALLa_code_bits 25
|
|
#define CALLa_code_mask 0x7f
|
|
|
|
#define init_CALLa \
|
|
{ \
|
|
CALLa_opcode, \
|
|
CALLa_addr_bits, CALLa_addr_mask, \
|
|
CALLa_S_bits, CALLa_S_mask, \
|
|
CALLa_code_bits, CALLa_code_mask \
|
|
};
|
|
|
|
|
|
/* pseudoDEBUG
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |.fn....|.grp.......|.reg.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_grp;
|
|
int mask_grp;
|
|
int bits_fn;
|
|
int mask_fn;
|
|
int bits_code;
|
|
int mask_code;
|
|
} PseudoDbg;
|
|
|
|
#define PseudoDbg_opcode 0xf800
|
|
#define PseudoDbg_reg_bits 0
|
|
#define PseudoDbg_reg_mask 0x7
|
|
#define PseudoDbg_grp_bits 3
|
|
#define PseudoDbg_grp_mask 0x7
|
|
#define PseudoDbg_fn_bits 6
|
|
#define PseudoDbg_fn_mask 0x3
|
|
#define PseudoDbg_code_bits 8
|
|
#define PseudoDbg_code_mask 0xff
|
|
|
|
#define init_PseudoDbg \
|
|
{ \
|
|
PseudoDbg_opcode, \
|
|
PseudoDbg_reg_bits, PseudoDbg_reg_mask, \
|
|
PseudoDbg_grp_bits, PseudoDbg_grp_mask, \
|
|
PseudoDbg_fn_bits, PseudoDbg_fn_mask, \
|
|
PseudoDbg_code_bits, PseudoDbg_code_mask \
|
|
};
|
|
|
|
/* PseudoDbg_assert
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 1 | 0 | - | - | - | dbgop |.grp.......|.regtest...|
|
|
|.expected......................................................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_expected;
|
|
int mask_expected;
|
|
int bits_regtest;
|
|
int mask_regtest;
|
|
int bits_grp;
|
|
int mask_grp;
|
|
int bits_dbgop;
|
|
int mask_dbgop;
|
|
int bits_dontcare;
|
|
int mask_dontcare;
|
|
int bits_code;
|
|
int mask_code;
|
|
} PseudoDbg_Assert;
|
|
|
|
#define PseudoDbg_Assert_opcode 0xf0000000
|
|
#define PseudoDbg_Assert_expected_bits 0
|
|
#define PseudoDbg_Assert_expected_mask 0xffff
|
|
#define PseudoDbg_Assert_regtest_bits 16
|
|
#define PseudoDbg_Assert_regtest_mask 0x7
|
|
#define PseudoDbg_Assert_grp_bits 19
|
|
#define PseudoDbg_Assert_grp_mask 0x7
|
|
#define PseudoDbg_Assert_dbgop_bits 22
|
|
#define PseudoDbg_Assert_dbgop_mask 0x3
|
|
#define PseudoDbg_Assert_dontcare_bits 24
|
|
#define PseudoDbg_Assert_dontcare_mask 0x7
|
|
#define PseudoDbg_Assert_code_bits 27
|
|
#define PseudoDbg_Assert_code_mask 0x1f
|
|
|
|
#define init_PseudoDbg_Assert \
|
|
{ \
|
|
PseudoDbg_Assert_opcode, \
|
|
PseudoDbg_Assert_expected_bits, PseudoDbg_Assert_expected_mask, \
|
|
PseudoDbg_Assert_regtest_bits, PseudoDbg_Assert_regtest_mask, \
|
|
PseudoDbg_Assert_grp_bits, PseudoDbg_Assert_grp_mask, \
|
|
PseudoDbg_Assert_dbgop_bits, PseudoDbg_Assert_dbgop_mask, \
|
|
PseudoDbg_Assert_dontcare_bits, PseudoDbg_Assert_dontcare_mask, \
|
|
PseudoDbg_Assert_code_bits, PseudoDbg_Assert_code_mask \
|
|
};
|
|
|
|
/* pseudoChr
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |.ch............................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_ch;
|
|
int mask_ch;
|
|
int bits_code;
|
|
int mask_code;
|
|
} PseudoChr;
|
|
|
|
#define PseudoChr_opcode 0xf900
|
|
#define PseudoChr_ch_bits 0
|
|
#define PseudoChr_ch_mask 0xff
|
|
#define PseudoChr_code_bits 8
|
|
#define PseudoChr_code_mask 0xff
|
|
|
|
#define init_PseudoChr \
|
|
{ \
|
|
PseudoChr_opcode, \
|
|
PseudoChr_ch_bits, PseudoChr_ch_mask, \
|
|
PseudoChr_code_bits, PseudoChr_code_mask \
|
|
};
|
|
|
|
/* CaCTRL
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |.a.|.op....|.reg.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_op;
|
|
int mask_op;
|
|
int bits_a;
|
|
int mask_a;
|
|
int bits_code;
|
|
int mask_code;
|
|
} CaCTRL;
|
|
|
|
#define CaCTRL_opcode 0x0240
|
|
#define CaCTRL_reg_bits 0
|
|
#define CaCTRL_reg_mask 0x7
|
|
#define CaCTRL_op_bits 3
|
|
#define CaCTRL_op_mask 0x3
|
|
#define CaCTRL_a_bits 5
|
|
#define CaCTRL_a_mask 0x1
|
|
#define CaCTRL_code_bits 6
|
|
#define CaCTRL_code_mask 0x3fff
|
|
|
|
#define init_CaCTRL \
|
|
{ \
|
|
CaCTRL_opcode, \
|
|
CaCTRL_reg_bits, CaCTRL_reg_mask, \
|
|
CaCTRL_op_bits, CaCTRL_op_mask, \
|
|
CaCTRL_a_bits, CaCTRL_a_mask, \
|
|
CaCTRL_code_bits, CaCTRL_code_mask \
|
|
};
|
|
|
|
/* PushPopMultiple
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 0 | 1 | 0 |.d.|.p.|.W.|.dr........|.pr........|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_pr;
|
|
int mask_pr;
|
|
int bits_dr;
|
|
int mask_dr;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_p;
|
|
int mask_p;
|
|
int bits_d;
|
|
int mask_d;
|
|
int bits_code;
|
|
int mask_code;
|
|
} PushPopMultiple;
|
|
|
|
#define PushPopMultiple_opcode 0x0400
|
|
#define PushPopMultiple_pr_bits 0
|
|
#define PushPopMultiple_pr_mask 0x7
|
|
#define PushPopMultiple_dr_bits 3
|
|
#define PushPopMultiple_dr_mask 0x7
|
|
#define PushPopMultiple_W_bits 6
|
|
#define PushPopMultiple_W_mask 0x1
|
|
#define PushPopMultiple_p_bits 7
|
|
#define PushPopMultiple_p_mask 0x1
|
|
#define PushPopMultiple_d_bits 8
|
|
#define PushPopMultiple_d_mask 0x1
|
|
#define PushPopMultiple_code_bits 8
|
|
#define PushPopMultiple_code_mask 0x1
|
|
|
|
#define init_PushPopMultiple \
|
|
{ \
|
|
PushPopMultiple_opcode, \
|
|
PushPopMultiple_pr_bits, PushPopMultiple_pr_mask, \
|
|
PushPopMultiple_dr_bits, PushPopMultiple_dr_mask, \
|
|
PushPopMultiple_W_bits, PushPopMultiple_W_mask, \
|
|
PushPopMultiple_p_bits, PushPopMultiple_p_mask, \
|
|
PushPopMultiple_d_bits, PushPopMultiple_d_mask, \
|
|
PushPopMultiple_code_bits, PushPopMultiple_code_mask \
|
|
};
|
|
|
|
/* PushPopReg
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.W.|.grp.......|.reg.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_grp;
|
|
int mask_grp;
|
|
int bits_W;
|
|
int mask_W;
|
|
int bits_code;
|
|
int mask_code;
|
|
} PushPopReg;
|
|
|
|
#define PushPopReg_opcode 0x0100
|
|
#define PushPopReg_reg_bits 0
|
|
#define PushPopReg_reg_mask 0x7
|
|
#define PushPopReg_grp_bits 3
|
|
#define PushPopReg_grp_mask 0x7
|
|
#define PushPopReg_W_bits 6
|
|
#define PushPopReg_W_mask 0x1
|
|
#define PushPopReg_code_bits 7
|
|
#define PushPopReg_code_mask 0x1ff
|
|
|
|
#define init_PushPopReg \
|
|
{ \
|
|
PushPopReg_opcode, \
|
|
PushPopReg_reg_bits, PushPopReg_reg_mask, \
|
|
PushPopReg_grp_bits, PushPopReg_grp_mask, \
|
|
PushPopReg_W_bits, PushPopReg_W_mask, \
|
|
PushPopReg_code_bits, PushPopReg_code_mask, \
|
|
};
|
|
|
|
/* linkage
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.R.|
|
|
|.framesize.....................................................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_framesize;
|
|
int mask_framesize;
|
|
int bits_R;
|
|
int mask_R;
|
|
int bits_code;
|
|
int mask_code;
|
|
} Linkage;
|
|
|
|
#define Linkage_opcode 0xe8000000
|
|
#define Linkage_framesize_bits 0
|
|
#define Linkage_framesize_mask 0xffff
|
|
#define Linkage_R_bits 16
|
|
#define Linkage_R_mask 0x1
|
|
#define Linkage_code_bits 17
|
|
#define Linkage_code_mask 0x7fff
|
|
|
|
#define init_Linkage \
|
|
{ \
|
|
Linkage_opcode, \
|
|
Linkage_framesize_bits, Linkage_framesize_mask, \
|
|
Linkage_R_bits, Linkage_R_mask, \
|
|
Linkage_code_bits, Linkage_code_mask \
|
|
};
|
|
|
|
/* LoopSetup
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |.rop...|.c.|.soffset.......|
|
|
|.reg...........| - | - |.eoffset...............................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_eoffset;
|
|
int mask_eoffset;
|
|
int bits_dontcare;
|
|
int mask_dontcare;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_soffset;
|
|
int mask_soffset;
|
|
int bits_c;
|
|
int mask_c;
|
|
int bits_rop;
|
|
int mask_rop;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LoopSetup;
|
|
|
|
#define LoopSetup_opcode 0xe0800000
|
|
#define LoopSetup_eoffset_bits 0
|
|
#define LoopSetup_eoffset_mask 0x3ff
|
|
#define LoopSetup_dontcare_bits 10
|
|
#define LoopSetup_dontcare_mask 0x3
|
|
#define LoopSetup_reg_bits 12
|
|
#define LoopSetup_reg_mask 0xf
|
|
#define LoopSetup_soffset_bits 16
|
|
#define LoopSetup_soffset_mask 0xf
|
|
#define LoopSetup_c_bits 20
|
|
#define LoopSetup_c_mask 0x1
|
|
#define LoopSetup_rop_bits 21
|
|
#define LoopSetup_rop_mask 0x3
|
|
#define LoopSetup_code_bits 23
|
|
#define LoopSetup_code_mask 0x1ff
|
|
|
|
#define init_LoopSetup \
|
|
{ \
|
|
LoopSetup_opcode, \
|
|
LoopSetup_eoffset_bits, LoopSetup_eoffset_mask, \
|
|
LoopSetup_dontcare_bits, LoopSetup_dontcare_mask, \
|
|
LoopSetup_reg_bits, LoopSetup_reg_mask, \
|
|
LoopSetup_soffset_bits, LoopSetup_soffset_mask, \
|
|
LoopSetup_c_bits, LoopSetup_c_mask, \
|
|
LoopSetup_rop_bits, LoopSetup_rop_mask, \
|
|
LoopSetup_code_bits, LoopSetup_code_mask \
|
|
};
|
|
|
|
/* LDIMMhalf
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |.Z.|.H.|.S.|.grp...|.reg.......|
|
|
|.hword.........................................................|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long opcode;
|
|
int bits_hword;
|
|
int mask_hword;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_grp;
|
|
int mask_grp;
|
|
int bits_S;
|
|
int mask_S;
|
|
int bits_H;
|
|
int mask_H;
|
|
int bits_Z;
|
|
int mask_Z;
|
|
int bits_code;
|
|
int mask_code;
|
|
} LDIMMhalf;
|
|
|
|
#define LDIMMhalf_opcode 0xe1000000
|
|
#define LDIMMhalf_hword_bits 0
|
|
#define LDIMMhalf_hword_mask 0xffff
|
|
#define LDIMMhalf_reg_bits 16
|
|
#define LDIMMhalf_reg_mask 0x7
|
|
#define LDIMMhalf_grp_bits 19
|
|
#define LDIMMhalf_grp_mask 0x3
|
|
#define LDIMMhalf_S_bits 21
|
|
#define LDIMMhalf_S_mask 0x1
|
|
#define LDIMMhalf_H_bits 22
|
|
#define LDIMMhalf_H_mask 0x1
|
|
#define LDIMMhalf_Z_bits 23
|
|
#define LDIMMhalf_Z_mask 0x1
|
|
#define LDIMMhalf_code_bits 24
|
|
#define LDIMMhalf_code_mask 0xff
|
|
|
|
#define init_LDIMMhalf \
|
|
{ \
|
|
LDIMMhalf_opcode, \
|
|
LDIMMhalf_hword_bits, LDIMMhalf_hword_mask, \
|
|
LDIMMhalf_reg_bits, LDIMMhalf_reg_mask, \
|
|
LDIMMhalf_grp_bits, LDIMMhalf_grp_mask, \
|
|
LDIMMhalf_S_bits, LDIMMhalf_S_mask, \
|
|
LDIMMhalf_H_bits, LDIMMhalf_H_mask, \
|
|
LDIMMhalf_Z_bits, LDIMMhalf_Z_mask, \
|
|
LDIMMhalf_code_bits, LDIMMhalf_code_mask \
|
|
};
|
|
|
|
|
|
/* CC2dreg
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |.op....|.reg.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_reg;
|
|
int mask_reg;
|
|
int bits_op;
|
|
int mask_op;
|
|
int bits_code;
|
|
int mask_code;
|
|
} CC2dreg;
|
|
|
|
#define CC2dreg_opcode 0x0200
|
|
#define CC2dreg_reg_bits 0
|
|
#define CC2dreg_reg_mask 0x7
|
|
#define CC2dreg_op_bits 3
|
|
#define CC2dreg_op_mask 0x3
|
|
#define CC2dreg_code_bits 5
|
|
#define CC2dreg_code_mask 0x7fff
|
|
|
|
#define init_CC2dreg \
|
|
{ \
|
|
CC2dreg_opcode, \
|
|
CC2dreg_reg_bits, CC2dreg_reg_mask, \
|
|
CC2dreg_op_bits, CC2dreg_op_mask, \
|
|
CC2dreg_code_bits, CC2dreg_code_mask \
|
|
};
|
|
|
|
|
|
/* PTR2op
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 1 | 0 | 0 | 0 | 1 | 0 |.opc.......|.src.......|.dst.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_src;
|
|
int mask_src;
|
|
int bits_opc;
|
|
int mask_opc;
|
|
int bits_code;
|
|
int mask_code;
|
|
} PTR2op;
|
|
|
|
#define PTR2op_opcode 0x4400
|
|
#define PTR2op_dst_bits 0
|
|
#define PTR2op_dst_mask 0x7
|
|
#define PTR2op_src_bits 3
|
|
#define PTR2op_src_mask 0x7
|
|
#define PTR2op_opc_bits 6
|
|
#define PTR2op_opc_mask 0x7
|
|
#define PTR2op_code_bits 9
|
|
#define PTR2op_code_mask 0x7f
|
|
|
|
#define init_PTR2op \
|
|
{ \
|
|
PTR2op_opcode, \
|
|
PTR2op_dst_bits, PTR2op_dst_mask, \
|
|
PTR2op_src_bits, PTR2op_src_mask, \
|
|
PTR2op_opc_bits, PTR2op_opc_mask, \
|
|
PTR2op_code_bits, PTR2op_code_mask \
|
|
};
|
|
|
|
|
|
/* COMP3op
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 1 | 0 | 1 |.opc.......|.dst.......|.src1......|.src0......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_src0;
|
|
int mask_src0;
|
|
int bits_src1;
|
|
int mask_src1;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_opc;
|
|
int mask_opc;
|
|
int bits_code;
|
|
int mask_code;
|
|
} COMP3op;
|
|
|
|
#define COMP3op_opcode 0x5000
|
|
#define COMP3op_src0_bits 0
|
|
#define COMP3op_src0_mask 0x7
|
|
#define COMP3op_src1_bits 3
|
|
#define COMP3op_src1_mask 0x7
|
|
#define COMP3op_dst_bits 6
|
|
#define COMP3op_dst_mask 0x7
|
|
#define COMP3op_opc_bits 9
|
|
#define COMP3op_opc_mask 0x7
|
|
#define COMP3op_code_bits 12
|
|
#define COMP3op_code_mask 0xf
|
|
|
|
#define init_COMP3op \
|
|
{ \
|
|
COMP3op_opcode, \
|
|
COMP3op_src0_bits, COMP3op_src0_mask, \
|
|
COMP3op_src1_bits, COMP3op_src1_mask, \
|
|
COMP3op_dst_bits, COMP3op_dst_mask, \
|
|
COMP3op_opc_bits, COMP3op_opc_mask, \
|
|
COMP3op_code_bits, COMP3op_code_mask \
|
|
};
|
|
|
|
/* ccMV
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |.T.|.d.|.s.|.dst.......|.src.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_src;
|
|
int mask_src;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_s;
|
|
int mask_s;
|
|
int bits_d;
|
|
int mask_d;
|
|
int bits_T;
|
|
int mask_T;
|
|
int bits_code;
|
|
int mask_code;
|
|
} CCmv;
|
|
|
|
#define CCmv_opcode 0x0600
|
|
#define CCmv_src_bits 0
|
|
#define CCmv_src_mask 0x7
|
|
#define CCmv_dst_bits 3
|
|
#define CCmv_dst_mask 0x7
|
|
#define CCmv_s_bits 6
|
|
#define CCmv_s_mask 0x1
|
|
#define CCmv_d_bits 7
|
|
#define CCmv_d_mask 0x1
|
|
#define CCmv_T_bits 8
|
|
#define CCmv_T_mask 0x1
|
|
#define CCmv_code_bits 9
|
|
#define CCmv_code_mask 0x7f
|
|
|
|
#define init_CCmv \
|
|
{ \
|
|
CCmv_opcode, \
|
|
CCmv_src_bits, CCmv_src_mask, \
|
|
CCmv_dst_bits, CCmv_dst_mask, \
|
|
CCmv_s_bits, CCmv_s_mask, \
|
|
CCmv_d_bits, CCmv_d_mask, \
|
|
CCmv_T_bits, CCmv_T_mask, \
|
|
CCmv_code_bits, CCmv_code_mask \
|
|
};
|
|
|
|
|
|
/* CCflag
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 1 |.I.|.opc.......|.G.|.y.........|.x.........|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_x;
|
|
int mask_x;
|
|
int bits_y;
|
|
int mask_y;
|
|
int bits_G;
|
|
int mask_G;
|
|
int bits_opc;
|
|
int mask_opc;
|
|
int bits_I;
|
|
int mask_I;
|
|
int bits_code;
|
|
int mask_code;
|
|
} CCflag;
|
|
|
|
#define CCflag_opcode 0x0800
|
|
#define CCflag_x_bits 0
|
|
#define CCflag_x_mask 0x7
|
|
#define CCflag_y_bits 3
|
|
#define CCflag_y_mask 0x7
|
|
#define CCflag_G_bits 6
|
|
#define CCflag_G_mask 0x1
|
|
#define CCflag_opc_bits 7
|
|
#define CCflag_opc_mask 0x7
|
|
#define CCflag_I_bits 10
|
|
#define CCflag_I_mask 0x1
|
|
#define CCflag_code_bits 11
|
|
#define CCflag_code_mask 0x1f
|
|
|
|
#define init_CCflag \
|
|
{ \
|
|
CCflag_opcode, \
|
|
CCflag_x_bits, CCflag_x_mask, \
|
|
CCflag_y_bits, CCflag_y_mask, \
|
|
CCflag_G_bits, CCflag_G_mask, \
|
|
CCflag_opc_bits, CCflag_opc_mask, \
|
|
CCflag_I_bits, CCflag_I_mask, \
|
|
CCflag_code_bits, CCflag_code_mask, \
|
|
};
|
|
|
|
|
|
/* CC2stat
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.D.|.op....|.cbit..............|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_cbit;
|
|
int mask_cbit;
|
|
int bits_op;
|
|
int mask_op;
|
|
int bits_D;
|
|
int mask_D;
|
|
int bits_code;
|
|
int mask_code;
|
|
} CC2stat;
|
|
|
|
#define CC2stat_opcode 0x0300
|
|
#define CC2stat_cbit_bits 0
|
|
#define CC2stat_cbit_mask 0x1f
|
|
#define CC2stat_op_bits 5
|
|
#define CC2stat_op_mask 0x3
|
|
#define CC2stat_D_bits 7
|
|
#define CC2stat_D_mask 0x1
|
|
#define CC2stat_code_bits 8
|
|
#define CC2stat_code_mask 0xff
|
|
|
|
#define init_CC2stat \
|
|
{ \
|
|
CC2stat_opcode, \
|
|
CC2stat_cbit_bits, CC2stat_cbit_mask, \
|
|
CC2stat_op_bits, CC2stat_op_mask, \
|
|
CC2stat_D_bits, CC2stat_D_mask, \
|
|
CC2stat_code_bits, CC2stat_code_mask \
|
|
};
|
|
|
|
|
|
/* REGMV
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 0 | 1 | 1 |.gd........|.gs........|.dst.......|.src.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_src;
|
|
int mask_src;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_gs;
|
|
int mask_gs;
|
|
int bits_gd;
|
|
int mask_gd;
|
|
int bits_code;
|
|
int mask_code;
|
|
} RegMv;
|
|
|
|
#define RegMv_opcode 0x3000
|
|
#define RegMv_src_bits 0
|
|
#define RegMv_src_mask 0x7
|
|
#define RegMv_dst_bits 3
|
|
#define RegMv_dst_mask 0x7
|
|
#define RegMv_gs_bits 6
|
|
#define RegMv_gs_mask 0x7
|
|
#define RegMv_gd_bits 9
|
|
#define RegMv_gd_mask 0x7
|
|
#define RegMv_code_bits 12
|
|
#define RegMv_code_mask 0xf
|
|
|
|
#define init_RegMv \
|
|
{ \
|
|
RegMv_opcode, \
|
|
RegMv_src_bits, RegMv_src_mask, \
|
|
RegMv_dst_bits, RegMv_dst_mask, \
|
|
RegMv_gs_bits, RegMv_gs_mask, \
|
|
RegMv_gd_bits, RegMv_gd_mask, \
|
|
RegMv_code_bits, RegMv_code_mask \
|
|
};
|
|
|
|
|
|
/* COMPI2opD
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 1 | 1 | 0 | 0 |.op|.isrc......................|.dst.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_dst;
|
|
int mask_dst;
|
|
int bits_src;
|
|
int mask_src;
|
|
int bits_op;
|
|
int mask_op;
|
|
int bits_code;
|
|
int mask_code;
|
|
} COMPI2opD;
|
|
|
|
#define COMPI2opD_opcode 0x6000
|
|
#define COMPI2opD_dst_bits 0
|
|
#define COMPI2opD_dst_mask 0x7
|
|
#define COMPI2opD_src_bits 3
|
|
#define COMPI2opD_src_mask 0x7f
|
|
#define COMPI2opD_op_bits 10
|
|
#define COMPI2opD_op_mask 0x1
|
|
#define COMPI2opD_code_bits 11
|
|
#define COMPI2opD_code_mask 0x1f
|
|
|
|
#define init_COMPI2opD \
|
|
{ \
|
|
COMPI2opD_opcode, \
|
|
COMPI2opD_dst_bits, COMPI2opD_dst_mask, \
|
|
COMPI2opD_src_bits, COMPI2opD_src_mask, \
|
|
COMPI2opD_op_bits, COMPI2opD_op_mask, \
|
|
COMPI2opD_code_bits, COMPI2opD_code_mask \
|
|
};
|
|
|
|
/* COMPI2opP
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 0 | 1 | 1 | 0 | 1 |.op|.src.......................|.dst.......|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef COMPI2opD COMPI2opP;
|
|
|
|
#define COMPI2opP_opcode 0x6800
|
|
#define COMPI2opP_dst_bits 0
|
|
#define COMPI2opP_dst_mask 0x7
|
|
#define COMPI2opP_src_bits 3
|
|
#define COMPI2opP_src_mask 0x7f
|
|
#define COMPI2opP_op_bits 10
|
|
#define COMPI2opP_op_mask 0x1
|
|
#define COMPI2opP_code_bits 11
|
|
#define COMPI2opP_code_mask 0x1f
|
|
|
|
#define init_COMPI2opP \
|
|
{ \
|
|
COMPI2opP_opcode, \
|
|
COMPI2opP_dst_bits, COMPI2opP_dst_mask, \
|
|
COMPI2opP_src_bits, COMPI2opP_src_mask, \
|
|
COMPI2opP_op_bits, COMPI2opP_op_mask, \
|
|
COMPI2opP_code_bits, COMPI2opP_code_mask \
|
|
};
|
|
|
|
|
|
/* dagMODim
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |.br| 1 | 1 |.op|.m.....|.i.....|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_i;
|
|
int mask_i;
|
|
int bits_m;
|
|
int mask_m;
|
|
int bits_op;
|
|
int mask_op;
|
|
int bits_code2;
|
|
int mask_code2;
|
|
int bits_br;
|
|
int mask_br;
|
|
int bits_code;
|
|
int mask_code;
|
|
} DagMODim;
|
|
|
|
#define DagMODim_opcode 0x9e60
|
|
#define DagMODim_i_bits 0
|
|
#define DagMODim_i_mask 0x3
|
|
#define DagMODim_m_bits 2
|
|
#define DagMODim_m_mask 0x3
|
|
#define DagMODim_op_bits 4
|
|
#define DagMODim_op_mask 0x1
|
|
#define DagMODim_code2_bits 5
|
|
#define DagMODim_code2_mask 0x3
|
|
#define DagMODim_br_bits 7
|
|
#define DagMODim_br_mask 0x1
|
|
#define DagMODim_code_bits 8
|
|
#define DagMODim_code_mask 0xff
|
|
|
|
#define init_DagMODim \
|
|
{ \
|
|
DagMODim_opcode, \
|
|
DagMODim_i_bits, DagMODim_i_mask, \
|
|
DagMODim_m_bits, DagMODim_m_mask, \
|
|
DagMODim_op_bits, DagMODim_op_mask, \
|
|
DagMODim_code2_bits, DagMODim_code2_mask, \
|
|
DagMODim_br_bits, DagMODim_br_mask, \
|
|
DagMODim_code_bits, DagMODim_code_mask \
|
|
};
|
|
|
|
/* dagMODik
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |.op....|.i.....|
|
|
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
unsigned short opcode;
|
|
int bits_i;
|
|
int mask_i;
|
|
int bits_op;
|
|
int mask_op;
|
|
int bits_code;
|
|
int mask_code;
|
|
} DagMODik;
|
|
|
|
#define DagMODik_opcode 0x9f60
|
|
#define DagMODik_i_bits 0
|
|
#define DagMODik_i_mask 0x3
|
|
#define DagMODik_op_bits 2
|
|
#define DagMODik_op_mask 0x3
|
|
#define DagMODik_code_bits 3
|
|
#define DagMODik_code_mask 0xfff
|
|
|
|
#define init_DagMODik \
|
|
{ \
|
|
DagMODik_opcode, \
|
|
DagMODik_i_bits, DagMODik_i_mask, \
|
|
DagMODik_op_bits, DagMODik_op_mask, \
|
|
DagMODik_code_bits, DagMODik_code_mask \
|
|
};
|
|
|
|
#endif
|