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 10*1ad15f10SAlexander Gordeev #include <linux/const.h> 11*1ad15f10SAlexander Gordeev 12*1ad15f10SAlexander Gordeev #define PAGE_SHIFT 12 13*1ad15f10SAlexander Gordeev #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) 14*1ad15f10SAlexander Gordeev #define PAGE_MASK (~(PAGE_SIZE-1)) 15*1ad15f10SAlexander Gordeev 16*1ad15f10SAlexander Gordeev #ifndef __ASSEMBLY__ 17*1ad15f10SAlexander Gordeev 183e394a58SAlexander Gordeev #ifdef __x86_64__ 193e394a58SAlexander Gordeev #define LARGE_PAGE_SIZE (512 * PAGE_SIZE) 203e394a58SAlexander Gordeev #else 213e394a58SAlexander Gordeev #define LARGE_PAGE_SIZE (1024 * PAGE_SIZE) 223e394a58SAlexander Gordeev #endif 233e394a58SAlexander Gordeev 243e394a58SAlexander Gordeev #define PTE_PRESENT (1ull << 0) 253e394a58SAlexander Gordeev #define PTE_WRITE (1ull << 1) 263e394a58SAlexander Gordeev #define PTE_USER (1ull << 2) 273e394a58SAlexander Gordeev #define PTE_PSE (1ull << 7) 283e394a58SAlexander Gordeev #define PTE_ADDR (0xffffffffff000ull) 293e394a58SAlexander Gordeev 303e394a58SAlexander Gordeev #ifdef __x86_64__ 313e394a58SAlexander Gordeev #define PAGE_LEVEL 4 323e394a58SAlexander Gordeev #define PGDIR_WIDTH 9 333e394a58SAlexander Gordeev #define PGDIR_MASK 511 343e394a58SAlexander Gordeev #else 353e394a58SAlexander Gordeev #define PAGE_LEVEL 2 363e394a58SAlexander Gordeev #define PGDIR_WIDTH 10 373e394a58SAlexander Gordeev #define PGDIR_MASK 1023 383e394a58SAlexander Gordeev #endif 393e394a58SAlexander Gordeev 40*1ad15f10SAlexander Gordeev #endif /* !__ASSEMBLY__ */ 413e394a58SAlexander Gordeev #endif 42