#include "global.h" #include "a64instruction.h" #define HALT_WORD 0x8a000000 #define TYPE_ID_LSB 26 #define TYPE_ID_MSB 29 #define DP_IMM_ID 4 #define BRANCH_ID 5 #define DP_REG_LSB 25 #define DP_REG_MSB 26 #define DP_WIDTH_LSB 31 #define DP_WIDTH_MSB 32 #define DP_OP_LSB 29 #define DP_OP_MSB 31 #define DP_DEST_LSB 0 #define DP_DEST_MSB 5 #define DP_IMM_OPTYPE_LSB 23 #define DP_IMM_OPTYPE_MSB 26 #define DP_IMM_OPTYPE_ARITHM 2 #define DP_IMM_OPTYPE_WIDEMOV 5 #define DP_IMM_ARITHM_SHIFTFLAG_LSB 22 #define DP_IMM_ARITHM_SHIFTFLAG_MSB 23 #define DP_IMM_ARITHM_IMMVAL_LSB 10 #define DP_IMM_ARITHM_IMMVAL_MSB 22 #define DP_IMM_ARITHM_DEST_LSB 5 #define DP_IMM_ARITHM_DEST_MSB 10 #define DP_IMM_WIDEMOV_SHIFTSCALAR_LSB 21 #define DP_IMM_WIDEMOV_SHIFTSCALAR_MSB 23 #define DP_IMM_WIDEMOV_IMMVAL_LSB 5 #define DP_IMM_WIDEMOV_IMMVAL_MSB 21 #define DP_REG_SRC1_LSB 5 #define DP_REG_SRC1_MSB 10 #define DP_REG_SRC2_LSB 16 #define DP_REG_SRC2_MSB 21 #define DP_REG_OPTYPE_LSB 28 #define DP_REG_OPTYPE_MSB 29 #define DP_REG_ARITHMLOGIC_ARITHMFLAG_LSB 24 #define DP_REG_ARITHMLOGIC_ARITHMFLAG_MSB 25 #define DP_REG_ARITHMLOGIC_SHIFTTYPE_LSB 22 #define DP_REG_ARITHMLOGIC_SHIFTTYPE_MSB 24 #define DP_REG_ARITHMLOGIC_NEGSRC2FLAG_LSB 21 #define DP_REG_ARITHMLOGIC_NEGSRC2FLAG_MSB 22 #define DP_REG_ARITHMLOGIC_SHIFTAMOUNT_LSB 10 #define DP_REG_ARITHMLOGIC_SHIFTAMOUNT_MSB 16 #define DP_REG_MULTIPLY_SUMMAND_LSB 10 #define DP_REG_MULTIPLY_SUMMAND_MSB 15 #define DP_REG_MULTIPLY_NEGPROD_LSB 15 #define DP_REG_MULTIPLY_NEGPROD_MSB 16 // Defines the values for fields used for arithmetic/logic DPR instructions // that are necessary to indicate a multiplication instruction #define DP_REG_MULTIPLY_PROCESSOP 0 #define DP_REG_MULTIPLY_ARITHMFLAG 1 #define DP_REG_MULTIPLY_SHIFTTYPE 0 #define DP_REG_MULTIPLY_NEGSRC2FLAG 0 #define SDT_OPTYPE_FLAG_LSB 31 #define SDT_OPTYPE_FLAG_MSB 32 #define SDT_REGTYPE_FLAG_LSB 30 #define SDT_REGTYPE_FLAG_MSB 31 #define SDT_TARGET_REG_LSB 0 #define SDT_TARGET_REG_MSB 5 #define SDT_BASE_REG_LSB 5 #define SDT_BASE_REG_MSB 10 #define SDT_OFFSET_LSB 10 #define SDT_OFFSET_MSB 22 #define SDT_TRANSFER_TYPE_LSB 22 #define SDT_TRANSFER_TYPE_MSB 23 #define SDT_UNSIGNED_FLAG_LSB 24 #define SDT_UNSIGNED_FLAG_MSB 25 #define SDT_REGISTER_FLAG_LSB 21 #define SDT_REGISTER_FLAG_MSB 22 #define SDT_REGISTER_REG_LSB 16 #define SDT_REGISTER_REG_MSB 21 #define SDT_INDEXED_ADDRMODE_LSB 11 #define SDT_INDEXED_ADDRMODE_MSB 12 #define SDT_INDEXED_OFFSET_LSB 12 #define SDT_INDEXED_OFFSET_MSB 21 #define SDT_LOAD_LITERAL_OFFSET_LSB 5 #define SDT_LOAD_LITERAL_OFFSET_MSB 24 #define BRANCH_TYPE_LSB 30 #define BRANCH_TYPE_MSB 32 #define BRANCH_UNCONDITIONAL_OFFSET_LSB 0 #define BRANCH_UNCONDITIONAL_OFFSET_MSB 26 #define BRANCH_REGISTER_SRC_LSB 5 #define BRANCH_REGISTER_SRC_MSB 10 #define BRANCH_CONDITIONAL_COND_LSB 0 #define BRANCH_CONDITIONAL_COND_MSB 4 #define BRANCH_CONDITIONAL_OFFSET_LSB 5 #define BRANCH_CONDITIONAL_OFFSET_MSB 24