| /* bfin.h -- Header file for ADI Blackfin opcode table |
| Copyright (C) 2005-2021 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 |