target-tricore: add missing 64-bit MOV in RLC format
PATCH 1/1 target-tricore: add missing 64-bit MOV in RLC format
Add the missing 64-bit "MOV Ex, simm16" variant in RLC format.
Signed-off-by Alex Zuepke <[email protected]>
target-tricore/tricore-opcodes.h +1 -0
@@ -487,6 +487,7 @@ enum {OPC1_32_RLC_ADDIH_A =0x11 ,OPC1_32_RLC_MFCR =0x4d ,OPC1_32_RLC_MOV =0x3b , +OPC1_32_RLC_MOV_64 =0xfb ,/* 1.6 only */ OPC1_32_RLC_MOV_U =0xbb ,OPC1_32_RLC_MOV_H =0x7b , OPC1_32_RLC_MOVH_A = 0x91,
target-tricore/translate.c +12 -0
@@ -3781,6 +3781,17 @@ static void decode_rlc_opc(CPUTriCoreState *env, DisasContext *ctx,case OPC1_32_RLC_MOV :tcg_gen_movi_tl (cpu_gpr_d[r2], const16);break ; +case OPC1_32_RLC_MOV_64 : +if (tricore_feature (env,TRICORE_FEATURE_16 )) { +if ((r2 &0x1 ) !=0 ) { +/* TODO: raise OPD trap */ + } +tcg_gen_movi_tl (cpu_gpr_d[r2], const16); +tcg_gen_movi_tl (cpu_gpr_d[r2+1 ], const16 >>16 ); + }else { +/* TODO: raise illegal opcode trap */ + } +break ;case OPC1_32_RLC_MOV_U : const16 =MASK_OP_RLC_CONST16 (ctx->opcode);tcg_gen_movi_tl (cpu_gpr_d[r2], const16);
@@ -4021,6 +4032,7 @@ static void decode_32Bit_opc(CPUTriCoreState *env, DisasContext *ctx)case OPC1_32_RLC_ADDIH_A :case OPC1_32_RLC_MFCR :case OPC1_32_RLC_MOV : +case OPC1_32_RLC_MOV_64 :case OPC1_32_RLC_MOV_U :case OPC1_32_RLC_MOV_H :case OPC1_32_RLC_MOVH_A :
Quoted 3 lines · Alex Züpke
Add the missing 64-bit "MOV Ex, simm16" variant in RLC format.
Signed-off-by Alex Zuepke <[email protected]>
Again malformed as in your other patch. Other than that, it looks good.
Cheers,
Bastian