mirror of https://gitee.com/openkylin/linux.git
KVM: MMU: micro-optimize gpte_access
Avoid AND-NOT, most x86 processor lack an instruction for it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
6bb69c9b69
commit
bb9eadf0c3
|
@ -189,8 +189,11 @@ static inline unsigned FNAME(gpte_access)(struct kvm_vcpu *vcpu, u64 gpte)
|
|||
((gpte & VMX_EPT_EXECUTABLE_MASK) ? ACC_EXEC_MASK : 0) |
|
||||
ACC_USER_MASK;
|
||||
#else
|
||||
access = (gpte & (PT_WRITABLE_MASK | PT_USER_MASK)) | ACC_EXEC_MASK;
|
||||
access &= ~(gpte >> PT64_NX_SHIFT);
|
||||
BUILD_BUG_ON(ACC_EXEC_MASK != PT_PRESENT_MASK);
|
||||
BUILD_BUG_ON(ACC_EXEC_MASK != 1);
|
||||
access = gpte & (PT_WRITABLE_MASK | PT_USER_MASK | PT_PRESENT_MASK);
|
||||
/* Combine NX with P (which is set here) to get ACC_EXEC_MASK. */
|
||||
access ^= (gpte >> PT64_NX_SHIFT);
|
||||
#endif
|
||||
|
||||
return access;
|
||||
|
|
Loading…
Reference in New Issue