From 2f3eb6723db5b36ab7f0e39d0f6a144433a1f38f Mon Sep 17 00:00:00 2001 From: Kaige Fu Date: Thu, 12 Jul 2018 13:28:28 +0800 Subject: [PATCH] HV: Remove SIB decode related code in decode_modrm We will decode SIB in decode_sib after decode_modrm. So, there is no need to decode SIB related field in decode_modrm. This patch remove it. Signed-off-by: Kaige Fu Acked-by: Anthony Xu --- hypervisor/arch/x86/guest/instr_emul.c | 35 -------------------------- 1 file changed, 35 deletions(-) diff --git a/hypervisor/arch/x86/guest/instr_emul.c b/hypervisor/arch/x86/guest/instr_emul.c index 1bdb7ed89..89fe7ccc4 100644 --- a/hypervisor/arch/x86/guest/instr_emul.c +++ b/hypervisor/arch/x86/guest/instr_emul.c @@ -1969,41 +1969,6 @@ decode_modrm(struct vie *vie, enum vm_cpu_mode cpu_mode) vie->reg |= (vie->rex_r << 3); - /* SIB */ - if (vie->mod != VIE_MOD_DIRECT && vie->rm == VIE_RM_SIB) { - goto done; - } - - vie->base_register = gpr_map[vie->rm]; - - switch (vie->mod) { - case VIE_MOD_INDIRECT_DISP8: - vie->disp_bytes = 1U; - break; - case VIE_MOD_INDIRECT_DISP32: - vie->disp_bytes = 4U; - break; - case VIE_MOD_INDIRECT: - if (vie->rm == VIE_RM_DISP32) { - vie->disp_bytes = 4U; - /* - * Table 2-7. RIP-Relative Addressing - * - * In 64-bit mode mod=00 r/m=101 implies [rip] + disp32 - * whereas in compatibility mode it just implies disp32. - */ - - if (cpu_mode == CPU_MODE_64BIT) { - vie->base_register = CPU_REG_RIP; - } - else { - vie->base_register = CPU_REG_LAST; - } - } - break; - } - -done: vie_advance(vie); return 0;