On Thu, Sep 08, 2022, Liam Ni wrote: > From: Liam Ni <zhiguangni01@xxxxxxxxx> > > 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@xxxxxxxxx> > --- Pushed to branch `for_paolo/6.1` at: https://github.com/sean-jc/linux.git with the below nit sqaushed. Unless you hear otherwise, it will make its way to kvm/queue "soon". Note, the commit IDs are not guaranteed to be stable. > 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)) Only need one set of parentheses. > + reg = ctxt->modrm_reg; > + else > reg = (ctxt->b & 7) | ((ctxt->rex_prefix & 1) << 3); > > if (ctxt->d & Sse) { > -- > 2.34.1 >