From: Paolo Bonzini <pbonzini@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: kvm@vger.kernel.org, Bandan Das <bsd@redhat.com>
Subject: [PATCH 10/19] KVM: emulate: cleanup decode_modrm
Date: Mon, 14 Jul 2014 13:38:34 +0200 [thread overview]
Message-ID: <1405337923-4776-11-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1405337923-4776-1-git-send-email-pbonzini@redhat.com>
From: Bandan Das <bsd@redhat.com>
Remove the if conditional - that will help us avoid
an "else initialize to 0" Also, rearrange operators
for slightly better code.
Signed-off-by: Bandan Das <bsd@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
arch/x86/kvm/emulate.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 000fc7398832..94f5f8b94ce9 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -1066,19 +1066,17 @@ static int decode_modrm(struct x86_emulate_ctxt *ctxt,
struct operand *op)
{
u8 sib;
- int index_reg = 0, base_reg = 0, scale;
+ int index_reg, base_reg, scale;
int rc = X86EMUL_CONTINUE;
ulong modrm_ea = 0;
- if (ctxt->rex_prefix) {
- ctxt->modrm_reg = (ctxt->rex_prefix & 4) << 1; /* REX.R */
- index_reg = (ctxt->rex_prefix & 2) << 2; /* REX.X */
- ctxt->modrm_rm = base_reg = (ctxt->rex_prefix & 1) << 3; /* REG.B */
- }
+ ctxt->modrm_reg = ((ctxt->rex_prefix << 1) & 8); /* REX.R */
+ index_reg = (ctxt->rex_prefix << 2) & 8; /* REX.X */
+ base_reg = (ctxt->rex_prefix << 3) & 8; /* REX.B */
- ctxt->modrm_mod |= (ctxt->modrm & 0xc0) >> 6;
+ ctxt->modrm_mod = (ctxt->modrm & 0xc0) >> 6;
ctxt->modrm_reg |= (ctxt->modrm & 0x38) >> 3;
- ctxt->modrm_rm |= (ctxt->modrm & 0x07);
+ ctxt->modrm_rm = base_reg | (ctxt->modrm & 0x07);
ctxt->modrm_seg = VCPU_SREG_DS;
if (ctxt->modrm_mod == 3 || (ctxt->d & NoMod)) {
--
1.8.3.1
next prev parent reply other threads:[~2014-07-14 11:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-14 11:38 [PATCH resend 00/19] Emulator speedups for 3.17 Paolo Bonzini
2014-07-14 11:38 ` [PATCH 01/19] KVM: vmx: speed up emulation of invalid guest state Paolo Bonzini
2014-07-14 11:38 ` [PATCH 02/19] KVM: x86: return all bits from get_interrupt_shadow Paolo Bonzini
2014-07-14 11:38 ` [PATCH 03/19] KVM: x86: avoid useless set of KVM_REQ_EVENT after emulation Paolo Bonzini
2014-07-14 11:38 ` [PATCH 04/19] KVM: emulate: move around some checks Paolo Bonzini
2014-07-14 11:38 ` [PATCH 05/19] KVM: emulate: protect checks on ctxt->d by a common "if (unlikely())" Paolo Bonzini
2014-07-14 11:38 ` [PATCH 06/19] KVM: emulate: speed up emulated moves Paolo Bonzini
2014-07-14 11:38 ` [PATCH 07/19] KVM: emulate: simplify writeback Paolo Bonzini
2014-07-14 11:38 ` [PATCH 08/19] KVM: emulate: move init_decode_cache to emulate.c Paolo Bonzini
2014-07-14 11:38 ` [PATCH 09/19] KVM: emulate: Remove ctxt->intercept and ctxt->check_perm checks Paolo Bonzini
2014-07-14 11:38 ` Paolo Bonzini [this message]
2014-07-14 11:38 ` [PATCH 11/19] KVM: emulate: clean up initializations in init_decode_cache Paolo Bonzini
2014-07-14 11:38 ` [PATCH 12/19] KVM: emulate: rework seg_override Paolo Bonzini
2014-07-14 11:38 ` [PATCH 13/19] KVM: emulate: do not initialize memopp Paolo Bonzini
2014-07-14 11:38 ` [PATCH 14/19] KVM: emulate: speed up do_insn_fetch Paolo Bonzini
2014-07-14 11:38 ` [PATCH 15/19] KVM: emulate: avoid repeated calls to do_insn_fetch_bytes Paolo Bonzini
2014-07-14 11:38 ` [PATCH 16/19] KVM: emulate: avoid per-byte copying in instruction fetches Paolo Bonzini
2014-07-14 11:38 ` [PATCH 17/19] KVM: emulate: put pointers in the fetch_cache Paolo Bonzini
2014-07-14 11:38 ` [PATCH 18/19] KVM: x86: ensure emulator fetches do not span multiple pages Paolo Bonzini
2014-07-14 11:38 ` [PATCH 19/19] KVM: x86: use kvm_read_guest_page for emulator accesses Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1405337923-4776-11-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=bsd@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®