13e394a58SAlexander Gordeev #ifndef _ASM_X86_PAGE_H_ 23e394a58SAlexander Gordeev #define _ASM_X86_PAGE_H_ 33e394a58SAlexander Gordeev /* 43e394a58SAlexander Gordeev * Copyright (C) 2016, Red Hat Inc, Alexander Gordeev <agordeev@redhat.com> 53e394a58SAlexander Gordeev * 63e394a58SAlexander Gordeev * This work is licensed under the terms of the GNU LGPL, version 2. 73e394a58SAlexander Gordeev */ 83e394a58SAlexander Gordeev 93e394a58SAlexander Gordeev 101ad15f10SAlexander Gordeev #include <linux/const.h> 11*d10d16e1SAlexander Gordeev #include <bitops.h> 121ad15f10SAlexander Gordeev 131ad15f10SAlexander Gordeev #define PAGE_SHIFT 12 141ad15f10SAlexander Gordeev #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) 151ad15f10SAlexander Gordeev #define PAGE_MASK (~(PAGE_SIZE-1)) 161ad15f10SAlexander Gordeev 171ad15f10SAlexander Gordeev #ifndef __ASSEMBLY__ 181ad15f10SAlexander Gordeev 193e394a58SAlexander Gordeev #ifdef __x86_64__ 203e394a58SAlexander Gordeev #define LARGE_PAGE_SIZE (512 * PAGE_SIZE) 213e394a58SAlexander Gordeev #else 223e394a58SAlexander Gordeev #define LARGE_PAGE_SIZE (1024 * PAGE_SIZE) 233e394a58SAlexander Gordeev #endif 243e394a58SAlexander Gordeev 25*d10d16e1SAlexander Gordeev #define PT_PRESENT_MASK (1ull << 0) 26*d10d16e1SAlexander Gordeev #define PT_WRITABLE_MASK (1ull << 1) 27*d10d16e1SAlexander Gordeev #define PT_USER_MASK (1ull << 2) 28*d10d16e1SAlexander Gordeev #define PT_ACCESSED_MASK (1ull << 5) 29*d10d16e1SAlexander Gordeev #define PT_DIRTY_MASK (1ull << 6) 30*d10d16e1SAlexander Gordeev #define PT_PAGE_SIZE_MASK (1ull << 7) 31*d10d16e1SAlexander Gordeev #define PT64_NX_MASK (1ull << 63) 32*d10d16e1SAlexander Gordeev #define PT_ADDR_MASK GENMASK_ULL(51, 12) 333e394a58SAlexander Gordeev 343e394a58SAlexander Gordeev #ifdef __x86_64__ 353e394a58SAlexander Gordeev #define PAGE_LEVEL 4 363e394a58SAlexander Gordeev #define PGDIR_WIDTH 9 373e394a58SAlexander Gordeev #define PGDIR_MASK 511 383e394a58SAlexander Gordeev #else 393e394a58SAlexander Gordeev #define PAGE_LEVEL 2 403e394a58SAlexander Gordeev #define PGDIR_WIDTH 10 413e394a58SAlexander Gordeev #define PGDIR_MASK 1023 423e394a58SAlexander Gordeev #endif 433e394a58SAlexander Gordeev 441ad15f10SAlexander Gordeev #endif /* !__ASSEMBLY__ */ 453e394a58SAlexander Gordeev #endif 46