Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb9eadf0 authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

KVM: MMU: micro-optimize gpte_access



Avoid AND-NOT, most x86 processor lack an instruction for it.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 6bb69c9b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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;