xref: /kvm-unit-tests/lib/arm/asm/pgtable-hwdef.h (revision 62e6e986963d2d80863b6371adbd4c4497d68d02)
17a693feeSAndrew Jones #ifndef _ASMARM_PGTABLE_HWDEF_H_
27a693feeSAndrew Jones #define _ASMARM_PGTABLE_HWDEF_H_
37a693feeSAndrew Jones /*
47a693feeSAndrew Jones  * From arch/arm/include/asm/pgtable-3level-hwdef.h
57a693feeSAndrew Jones  */
67a693feeSAndrew Jones 
77a693feeSAndrew Jones /*
87a693feeSAndrew Jones  * Hardware page table definitions.
97a693feeSAndrew Jones  *
107a693feeSAndrew Jones  * + Level 1/2 descriptor
117a693feeSAndrew Jones  *   - common
127a693feeSAndrew Jones  */
137a693feeSAndrew Jones #define PMD_TYPE_MASK		(_AT(pmdval_t, 3) << 0)
147a693feeSAndrew Jones #define PMD_TYPE_FAULT		(_AT(pmdval_t, 0) << 0)
157a693feeSAndrew Jones #define PMD_TYPE_TABLE		(_AT(pmdval_t, 3) << 0)
167a693feeSAndrew Jones #define PMD_TYPE_SECT		(_AT(pmdval_t, 1) << 0)
177a693feeSAndrew Jones #define PMD_TABLE_BIT		(_AT(pmdval_t, 1) << 1)
187a693feeSAndrew Jones #define PMD_BIT4		(_AT(pmdval_t, 0))
197a693feeSAndrew Jones #define PMD_DOMAIN(x)		(_AT(pmdval_t, 0))
207a693feeSAndrew Jones #define PMD_APTABLE_SHIFT	(61)
217a693feeSAndrew Jones #define PMD_APTABLE		(_AT(pgdval_t, 3) << PGD_APTABLE_SHIFT)
227a693feeSAndrew Jones #define PMD_PXNTABLE		(_AT(pgdval_t, 1) << 59)
237a693feeSAndrew Jones 
247a693feeSAndrew Jones /*
257a693feeSAndrew Jones  *   - section
267a693feeSAndrew Jones  */
277a693feeSAndrew Jones #define PMD_SECT_BUFFERABLE	(_AT(pmdval_t, 1) << 2)
287a693feeSAndrew Jones #define PMD_SECT_CACHEABLE	(_AT(pmdval_t, 1) << 3)
297a693feeSAndrew Jones #define PMD_SECT_USER		(_AT(pmdval_t, 1) << 6)		/* AP[1] */
307a693feeSAndrew Jones #define PMD_SECT_AP2		(_AT(pmdval_t, 1) << 7)		/* read only */
317a693feeSAndrew Jones #define PMD_SECT_S		(_AT(pmdval_t, 3) << 8)
327a693feeSAndrew Jones #define PMD_SECT_AF		(_AT(pmdval_t, 1) << 10)
337a693feeSAndrew Jones #define PMD_SECT_nG		(_AT(pmdval_t, 1) << 11)
347a693feeSAndrew Jones #define PMD_SECT_PXN		(_AT(pmdval_t, 1) << 53)
357a693feeSAndrew Jones #define PMD_SECT_XN		(_AT(pmdval_t, 1) << 54)
367a693feeSAndrew Jones #define PMD_SECT_AP_WRITE	(_AT(pmdval_t, 0))
377a693feeSAndrew Jones #define PMD_SECT_AP_READ	(_AT(pmdval_t, 0))
387a693feeSAndrew Jones #define PMD_SECT_AP1		(_AT(pmdval_t, 1) << 6)
397a693feeSAndrew Jones #define PMD_SECT_TEX(x)		(_AT(pmdval_t, 0))
407a693feeSAndrew Jones 
417a693feeSAndrew Jones /*
427a693feeSAndrew Jones  * AttrIndx[2:0] encoding (mapping attributes defined in the MAIR* registers).
437a693feeSAndrew Jones  */
447a693feeSAndrew Jones #define PMD_SECT_UNCACHED	(_AT(pmdval_t, 0) << 2)	/* strongly ordered */
457a693feeSAndrew Jones #define PMD_SECT_BUFFERED	(_AT(pmdval_t, 1) << 2)	/* normal non-cacheable */
467a693feeSAndrew Jones #define PMD_SECT_WT		(_AT(pmdval_t, 2) << 2)	/* normal inner write-through */
477a693feeSAndrew Jones #define PMD_SECT_WB		(_AT(pmdval_t, 3) << 2)	/* normal inner write-back */
487a693feeSAndrew Jones #define PMD_SECT_WBWA		(_AT(pmdval_t, 7) << 2)	/* normal inner write-alloc */
497a693feeSAndrew Jones 
507a693feeSAndrew Jones /*
517a693feeSAndrew Jones  * + Level 3 descriptor (PTE)
527a693feeSAndrew Jones  */
537a693feeSAndrew Jones #define PTE_TYPE_MASK		(_AT(pteval_t, 3) << 0)
547a693feeSAndrew Jones #define PTE_TYPE_FAULT		(_AT(pteval_t, 0) << 0)
557a693feeSAndrew Jones #define PTE_TYPE_PAGE		(_AT(pteval_t, 3) << 0)
567a693feeSAndrew Jones #define PTE_TABLE_BIT		(_AT(pteval_t, 1) << 1)
577a693feeSAndrew Jones #define PTE_BUFFERABLE		(_AT(pteval_t, 1) << 2)		/* AttrIndx[0] */
587a693feeSAndrew Jones #define PTE_CACHEABLE		(_AT(pteval_t, 1) << 3)		/* AttrIndx[1] */
597a693feeSAndrew Jones #define PTE_AP2			(_AT(pteval_t, 1) << 7)		/* AP[2] */
607a693feeSAndrew Jones #define PTE_EXT_SHARED		(_AT(pteval_t, 3) << 8)		/* SH[1:0], inner shareable */
617a693feeSAndrew Jones #define PTE_EXT_AF		(_AT(pteval_t, 1) << 10)	/* Access Flag */
627a693feeSAndrew Jones #define PTE_EXT_NG		(_AT(pteval_t, 1) << 11)	/* nG */
637a693feeSAndrew Jones #define PTE_EXT_XN		(_AT(pteval_t, 1) << 54)	/* XN */
647a693feeSAndrew Jones 
65*62e6e986SAndrew Jones /*
66*62e6e986SAndrew Jones  * 40-bit physical address supported.
67*62e6e986SAndrew Jones  */
68*62e6e986SAndrew Jones #define PHYS_MASK_SHIFT		(40)
69*62e6e986SAndrew Jones #define PHYS_MASK		((_AC(1, ULL) << PHYS_MASK_SHIFT) - 1)
70*62e6e986SAndrew Jones 
717a693feeSAndrew Jones #endif /* _ASMARM_PGTABLE_HWDEF_H_ */
72