97 lines
2.9 KiB
C
97 lines
2.9 KiB
C
#include "../global.h"
|
|
#include "../shared/a64instruction/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_FLAG_LSB 25
|
|
#define DP_REG_FLAG_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
|