1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Shadow paging constants/helpers that don't need to be #undef'd. */
3 #ifndef __KVM_X86_PAGING_H
4 #define __KVM_X86_PAGING_H
6 #define GUEST_PT64_BASE_ADDR_MASK (((1ULL << 52) - 1) & ~(u64)(PAGE_SIZE-1))
8 #define PT64_LEVEL_BITS 9
10 #define PT64_INDEX(address, level) __PT_INDEX(address, level, PT64_LEVEL_BITS)
12 #define PT64_LVL_ADDR_MASK(level) \
13 __PT_LVL_ADDR_MASK(GUEST_PT64_BASE_ADDR_MASK, level, PT64_LEVEL_BITS)
15 #define PT64_LVL_OFFSET_MASK(level) \
16 __PT_LVL_OFFSET_MASK(GUEST_PT64_BASE_ADDR_MASK, level, PT64_LEVEL_BITS)
19 #define PT32_LEVEL_SHIFT(level) __PT_LEVEL_SHIFT(level, PT32_LEVEL_BITS)
21 #define PT32_LVL_OFFSET_MASK(level) \
22 __PT_LVL_OFFSET_MASK(PT32_BASE_ADDR_MASK, level, PT32_LEVEL_BITS)
24 #define PT32_INDEX(address, level) __PT_INDEX(address, level, PT32_LEVEL_BITS)
26 #define PT32_BASE_ADDR_MASK PAGE_MASK
28 #define PT32_LVL_ADDR_MASK(level) \
29 __PT_LVL_ADDR_MASK(PT32_BASE_ADDR_MASK, level, PT32_LEVEL_BITS)
31 #endif /* __KVM_X86_PAGING_H */