#if PTTYPE == 64
#define pt_element_t …
#define guest_walker …
#define FNAME …
#define PT_LEVEL_BITS …
#define PT_GUEST_DIRTY_SHIFT …
#define PT_GUEST_ACCESSED_SHIFT …
#define PT_HAVE_ACCESSED_DIRTY …
#ifdef CONFIG_X86_64
#define PT_MAX_FULL_LEVELS …
#else
#define PT_MAX_FULL_LEVELS …
#endif
#elif PTTYPE == 32
#define pt_element_t …
#define guest_walker …
#define FNAME …
#define PT_LEVEL_BITS …
#define PT_MAX_FULL_LEVELS …
#define PT_GUEST_DIRTY_SHIFT …
#define PT_GUEST_ACCESSED_SHIFT …
#define PT_HAVE_ACCESSED_DIRTY …
#define PT32_DIR_PSE36_SIZE …
#define PT32_DIR_PSE36_SHIFT …
#define PT32_DIR_PSE36_MASK …
#elif PTTYPE == PTTYPE_EPT
#define pt_element_t …
#define guest_walker …
#define FNAME …
#define PT_LEVEL_BITS …
#define PT_GUEST_DIRTY_SHIFT …
#define PT_GUEST_ACCESSED_SHIFT …
#define PT_HAVE_ACCESSED_DIRTY …
#define PT_MAX_FULL_LEVELS …
#else
#error Invalid PTTYPE value
#endif
#define PT_BASE_ADDR_MASK …
#define PT_LVL_ADDR_MASK …
#define PT_LVL_OFFSET_MASK …
#define PT_INDEX …
#define PT_GUEST_DIRTY_MASK …
#define PT_GUEST_ACCESSED_MASK …
#define gpte_to_gfn_lvl …
#define gpte_to_gfn …
struct guest_walker { … };
#if PTTYPE == 32
static inline gfn_t pse36_gfn_delta(u32 gpte)
{
int shift = 32 - PT32_DIR_PSE36_SHIFT - PAGE_SHIFT;
return (gpte & PT32_DIR_PSE36_MASK) << shift;
}
#endif
static gfn_t gpte_to_gfn_lvl(pt_element_t gpte, int lvl)
{ … }
static inline void FNAME(protect_clean_gpte)(struct kvm_mmu *mmu, unsigned *access,
unsigned gpte)
{ … }
static inline int FNAME(is_present_gpte)(unsigned long pte)
{ … }
static bool FNAME(is_bad_mt_xwr)(struct rsvd_bits_validate *rsvd_check, u64 gpte)
{ … }
static bool FNAME(is_rsvd_bits_set)(struct kvm_mmu *mmu, u64 gpte, int level)
{ … }
static bool FNAME(prefetch_invalid_gpte)(struct kvm_vcpu *vcpu,
struct kvm_mmu_page *sp, u64 *spte,
u64 gpte)
{ … }
static inline unsigned FNAME(gpte_access)(u64 gpte)
{ … }
static int FNAME(update_accessed_dirty_bits)(struct kvm_vcpu *vcpu,
struct kvm_mmu *mmu,
struct guest_walker *walker,
gpa_t addr, int write_fault)
{ … }
static inline unsigned FNAME(gpte_pkeys)(struct kvm_vcpu *vcpu, u64 gpte)
{ … }
static inline bool FNAME(is_last_gpte)(struct kvm_mmu *mmu,
unsigned int level, unsigned int gpte)
{ … }
static int FNAME(walk_addr_generic)(struct guest_walker *walker,
struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
gpa_t addr, u64 access)
{ … }
static int FNAME(walk_addr)(struct guest_walker *walker,
struct kvm_vcpu *vcpu, gpa_t addr, u64 access)
{ … }
static bool
FNAME(prefetch_gpte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,
u64 *spte, pt_element_t gpte)
{ … }
static bool FNAME(gpte_changed)(struct kvm_vcpu *vcpu,
struct guest_walker *gw, int level)
{ … }
static void FNAME(pte_prefetch)(struct kvm_vcpu *vcpu, struct guest_walker *gw,
u64 *sptep)
{ … }
static int FNAME(fetch)(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault,
struct guest_walker *gw)
{ … }
static int FNAME(page_fault)(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault)
{ … }
static gpa_t FNAME(get_level1_sp_gpa)(struct kvm_mmu_page *sp)
{ … }
static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
gpa_t addr, u64 access,
struct x86_exception *exception)
{ … }
static int FNAME(sync_spte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, int i)
{ … }
#undef pt_element_t
#undef guest_walker
#undef FNAME
#undef PT_BASE_ADDR_MASK
#undef PT_INDEX
#undef PT_LVL_ADDR_MASK
#undef PT_LVL_OFFSET_MASK
#undef PT_LEVEL_BITS
#undef PT_MAX_FULL_LEVELS
#undef gpte_to_gfn
#undef gpte_to_gfn_lvl
#undef PT_GUEST_ACCESSED_MASK
#undef PT_GUEST_DIRTY_MASK
#undef PT_GUEST_DIRTY_SHIFT
#undef PT_GUEST_ACCESSED_SHIFT
#undef PT_HAVE_ACCESSED_DIRTY