-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
KVM: x86: accessors for guest registers
As suggested by Avi, introduce accessors to read/write guest registers. This simplifies the ->cache_regs/->decache_regs interface, and improves register caching which is important for VMX, where the cost of vmcs_read/vmcs_write is significant. [avi: fix warnings] Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
- Loading branch information
Marcelo Tosatti
authored and
Avi Kivity
committed
Oct 15, 2008
1 parent
ca60dfb
commit 5fdbf97
Showing
7 changed files
with
264 additions
and
233 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
#ifndef ASM_KVM_CACHE_REGS_H | ||
#define ASM_KVM_CACHE_REGS_H | ||
|
||
static inline unsigned long kvm_register_read(struct kvm_vcpu *vcpu, | ||
enum kvm_reg reg) | ||
{ | ||
if (!test_bit(reg, (unsigned long *)&vcpu->arch.regs_avail)) | ||
kvm_x86_ops->cache_reg(vcpu, reg); | ||
|
||
return vcpu->arch.regs[reg]; | ||
} | ||
|
||
static inline void kvm_register_write(struct kvm_vcpu *vcpu, | ||
enum kvm_reg reg, | ||
unsigned long val) | ||
{ | ||
vcpu->arch.regs[reg] = val; | ||
__set_bit(reg, (unsigned long *)&vcpu->arch.regs_dirty); | ||
__set_bit(reg, (unsigned long *)&vcpu->arch.regs_avail); | ||
} | ||
|
||
static inline unsigned long kvm_rip_read(struct kvm_vcpu *vcpu) | ||
{ | ||
return kvm_register_read(vcpu, VCPU_REGS_RIP); | ||
} | ||
|
||
static inline void kvm_rip_write(struct kvm_vcpu *vcpu, unsigned long val) | ||
{ | ||
kvm_register_write(vcpu, VCPU_REGS_RIP, val); | ||
} | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.