KVM: x86: Omit VCPU_REGS_RIP from emulator's _regs array
authorSean Christopherson <seanjc@google.com>
Thu, 26 May 2022 21:08:12 +0000 (21:08 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 10 Jun 2022 14:01:30 +0000 (10:01 -0400)
commita5ba67b42f07952ec45755bbdd66d7c6e49f555c
tree922211d5ab8816c492fa1a941f9842e43a23ff19
parentdfe21e6bc05af433308bc1842da28a8fe28faaa4
KVM: x86: Omit VCPU_REGS_RIP from emulator's _regs array

Omit RIP from the emulator's _regs array, which is used only for GPRs,
i.e. registers that can be referenced via ModRM and/or SIB bytes.  The
emulator uses the dedicated _eip field for RIP, and manually reads from
_eip to handle RIP-relative addressing.

To avoid an even bigger, slightly more dangerous change, hardcode the
number of GPRs to 16 for the time being even though 32-bit KVM's emulator
technically should only have 8 GPRs.  Add a TODO to address that in a
future commit.

See also the comments above the read_gpr() and write_gpr() declarations,
and obviously the handling in writeback_registers().

No functional change intended.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Message-Id: <20220526210817.3428868-4-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/emulate.c
arch/x86/kvm/kvm_emulate.h