[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220908141210.1375828-1-zhiguangni01@zhaoxin.com>
Date: Thu, 8 Sep 2022 22:12:10 +0800
From: Liam Ni <zhiguangni01@...il.com>
To: linux-kernel@...r.kernel.org, kvm@...r.kernel.org, x86@...nel.org
Cc: pbonzini@...hat.com, tglx@...utronix.de,
dave.hansen@...ux.intel.com, seanjc@...gle.com,
zhiguangni01@...il.com
Subject: [PATCH v2] KVM:x86: Clean up ModR/M "reg" initialization in reg op decoding
From: Liam Ni <zhiguangni01@...il.com>
Refactor decode_register_operand() to get the ModR/M register if and
only if the instruction uses a ModR/M encoding to make it more obvious
how the register operand is retrieved.
Signed-off-by: Liam Ni <zhiguangni01@...il.com>
---
arch/x86/kvm/emulate.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index f092c54d1a2f..879b52af763a 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -1137,9 +1137,11 @@ static int em_fnstsw(struct x86_emulate_ctxt *ctxt)
static void decode_register_operand(struct x86_emulate_ctxt *ctxt,
struct operand *op)
{
- unsigned reg = ctxt->modrm_reg;
+ unsigned int reg;
- if (!(ctxt->d & ModRM))
+ if ((ctxt->d & ModRM))
+ reg = ctxt->modrm_reg;
+ else
reg = (ctxt->b & 7) | ((ctxt->rex_prefix & 1) << 3);
if (ctxt->d & Sse) {
--
2.34.1
Powered by blists - more mailing lists