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