X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_xed.c;h=68e39b04d036d0678b0b0d46cc23f5c28f367210;hb=623de2de1c4a31c29975867343b7a78962094fee;hp=5975797d277447ba174b1549b47ce195006e4ccc;hpb=af10c7cdec94c879b207983a60581feae911546b;p=palacios-OLD.git diff --git a/palacios/src/palacios/vmm_xed.c b/palacios/src/palacios/vmm_xed.c index 5975797..68e39b0 100644 --- a/palacios/src/palacios/vmm_xed.c +++ b/palacios/src/palacios/vmm_xed.c @@ -1172,37 +1172,70 @@ static v3_op_type_t get_opcode(xed_iform_enum_t iform) { /* Data Instructions */ + // Write case XED_IFORM_ADC_MEMv_GPRv: case XED_IFORM_ADC_MEMv_IMM: case XED_IFORM_ADC_MEMb_GPR8: case XED_IFORM_ADC_MEMb_IMM: + // Read + case XED_IFORM_ADC_GPRv_MEMv: + case XED_IFORM_ADC_GPR8_MEMb: return V3_OP_ADC; + // Write case XED_IFORM_ADD_MEMv_GPRv: case XED_IFORM_ADD_MEMb_IMM: case XED_IFORM_ADD_MEMb_GPR8: case XED_IFORM_ADD_MEMv_IMM: + // Read + case XED_IFORM_ADD_GPRv_MEMv: + case XED_IFORM_ADD_GPR8_MEMb: return V3_OP_ADD; + // Write case XED_IFORM_AND_MEMv_IMM: case XED_IFORM_AND_MEMb_GPR8: case XED_IFORM_AND_MEMv_GPRv: case XED_IFORM_AND_MEMb_IMM: + // Read + case XED_IFORM_AND_GPR8_MEMb: + case XED_IFORM_AND_GPRv_MEMv: return V3_OP_AND; + // Write case XED_IFORM_SUB_MEMv_IMM: case XED_IFORM_SUB_MEMb_GPR8: case XED_IFORM_SUB_MEMb_IMM: case XED_IFORM_SUB_MEMv_GPRv: + // Read + case XED_IFORM_SUB_GPR8_MEMb: + case XED_IFORM_SUB_GPRv_MEMv: return V3_OP_SUB; + // Write case XED_IFORM_MOV_MEMv_GPRv: case XED_IFORM_MOV_MEMb_GPR8: case XED_IFORM_MOV_MEMb_AL: case XED_IFORM_MOV_MEMv_IMM: case XED_IFORM_MOV_MEMb_IMM: + // Read + case XED_IFORM_MOV_GPRv_MEMv: + case XED_IFORM_MOV_GPR8_MEMb: + case XED_IFORM_MOV_AL_MEMb: return V3_OP_MOV; + + // Read + case XED_IFORM_MOVZX_GPRv_MEMb: + case XED_IFORM_MOVZX_GPRv_MEMw: + return V3_OP_MOVZX; + + // Read + case XED_IFORM_MOVSX_GPRv_MEMb: + case XED_IFORM_MOVSX_GPRv_MEMw: + return V3_OP_MOVSX; + + case XED_IFORM_DEC_MEMv: case XED_IFORM_DEC_MEMb: return V3_OP_DEC; @@ -1211,16 +1244,24 @@ static v3_op_type_t get_opcode(xed_iform_enum_t iform) { case XED_IFORM_INC_MEMv: return V3_OP_INC; + // Write case XED_IFORM_OR_MEMv_IMM: case XED_IFORM_OR_MEMb_IMM: case XED_IFORM_OR_MEMv_GPRv: case XED_IFORM_OR_MEMb_GPR8: + // Read + case XED_IFORM_OR_GPRv_MEMv: + case XED_IFORM_OR_GPR8_MEMb: return V3_OP_OR; + // Write case XED_IFORM_XOR_MEMv_GPRv: case XED_IFORM_XOR_MEMb_IMM: case XED_IFORM_XOR_MEMb_GPR8: case XED_IFORM_XOR_MEMv_IMM: + // Read + case XED_IFORM_XOR_GPRv_MEMv: + case XED_IFORM_XOR_GPR8_MEMb: return V3_OP_XOR; case XED_IFORM_NEG_MEMb: