xref: /kvm-unit-tests/lib/x86/asm/page.h (revision 1ad15f10ed31c9ac275320292ab4a2e255a1cd42)
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