]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - arch/arm/include/asm/armv8/mmu.h
arm64: Remove non-full-va map code
[people/ms/u-boot.git] / arch / arm / include / asm / armv8 / mmu.h
index 4b7b67b643de7ce9e6e0cb47e47dda354a1c2b69..0d08ed3ba81060235d2f32e8efaec93ef69e1907 100644 (file)
  * The following definitions are related each other, shoud be
  * calculated specifically.
  */
-#define VA_BITS                        (42)    /* 42 bits virtual address */
+
+#define VA_BITS                        CONFIG_SYS_VA_BITS
+#define PTE_BLOCK_BITS         CONFIG_SYS_PTL2_BITS
+
+/*
+ * block/section address mask and size definitions.
+ */
 
 /* PAGE_SHIFT determines the page size */
 #undef  PAGE_SIZE
-#define PAGE_SHIFT             16
+#define PAGE_SHIFT             12
 #define PAGE_SIZE              (1 << PAGE_SHIFT)
 #define PAGE_MASK              (~(PAGE_SIZE-1))
 
-/*
- * section address mask and size definitions.
- */
-#define SECTION_SHIFT          29
-#define SECTION_SIZE           (UL(1) << SECTION_SHIFT)
-#define SECTION_MASK           (~(SECTION_SIZE-1))
 /***************************************************************/
 
 /*
 #define MT_NORMAL_NC           3
 #define MT_NORMAL              4
 
-#define MEMORY_ATTRIBUTES      ((0x00 << (MT_DEVICE_NGNRNE*8)) |       \
-                               (0x04 << (MT_DEVICE_NGNRE*8)) |         \
-                               (0x0c << (MT_DEVICE_GRE*8)) |           \
-                               (0x44 << (MT_NORMAL_NC*8)) |            \
-                               (UL(0xff) << (MT_NORMAL*8)))
+#define MEMORY_ATTRIBUTES      ((0x00 << (MT_DEVICE_NGNRNE * 8)) |     \
+                               (0x04 << (MT_DEVICE_NGNRE * 8))   |     \
+                               (0x0c << (MT_DEVICE_GRE * 8))     |     \
+                               (0x44 << (MT_NORMAL_NC * 8))      |     \
+                               (UL(0xff) << (MT_NORMAL * 8)))
 
 /*
  * Hardware page table definitions.
  *
- * Level 2 descriptor (PMD).
  */
-#define PMD_TYPE_MASK          (3 << 0)
-#define PMD_TYPE_FAULT         (0 << 0)
-#define PMD_TYPE_TABLE         (3 << 0)
-#define PMD_TYPE_SECT          (1 << 0)
+
+#define PTE_TYPE_MASK          (3 << 0)
+#define PTE_TYPE_FAULT         (0 << 0)
+#define PTE_TYPE_TABLE         (3 << 0)
+#define PTE_TYPE_BLOCK         (1 << 0)
+
+#define PTE_TABLE_PXN          (1UL << 59)
+#define PTE_TABLE_XN           (1UL << 60)
+#define PTE_TABLE_AP           (1UL << 61)
+#define PTE_TABLE_NS           (1UL << 63)
 
 /*
- * Section
+ * Block
  */
-#define PMD_SECT_S             (3 << 8)
-#define PMD_SECT_AF            (1 << 10)
-#define PMD_SECT_NG            (1 << 11)
-#define PMD_SECT_PXN           (UL(1) << 53)
-#define PMD_SECT_UXN           (UL(1) << 54)
+#define PTE_BLOCK_MEMTYPE(x)   ((x) << 2)
+#define PTE_BLOCK_NS            (1 << 5)
+#define PTE_BLOCK_NON_SHARE    (0 << 8)
+#define PTE_BLOCK_OUTER_SHARE  (2 << 8)
+#define PTE_BLOCK_INNER_SHARE  (3 << 8)
+#define PTE_BLOCK_AF           (1 << 10)
+#define PTE_BLOCK_NG           (1 << 11)
+#define PTE_BLOCK_PXN          (UL(1) << 53)
+#define PTE_BLOCK_UXN          (UL(1) << 54)
 
 /*
  * AttrIndx[2:0]
 #define TCR_ORGN_WBNWA         (3 << 10)
 #define TCR_ORGN_MASK          (3 << 10)
 #define TCR_SHARED_NON         (0 << 12)
-#define TCR_SHARED_OUTER       (1 << 12)
-#define TCR_SHARED_INNER       (2 << 12)
+#define TCR_SHARED_OUTER       (2 << 12)
+#define TCR_SHARED_INNER       (3 << 12)
 #define TCR_TG0_4K             (0 << 14)
 #define TCR_TG0_64K            (1 << 14)
 #define TCR_TG0_16K            (2 << 14)
-#define TCR_EL1_IPS_BITS       (UL(3) << 32)   /* 42 bits physical address */
-#define TCR_EL2_IPS_BITS       (3 << 16)       /* 42 bits physical address */
-#define TCR_EL3_IPS_BITS       (3 << 16)       /* 42 bits physical address */
+#define TCR_EPD1_DISABLE       (1 << 23)
 
-/* PTWs cacheable, inner/outer WBWA and non-shareable */
-#define TCR_FLAGS              (TCR_TG0_64K |          \
-                               TCR_SHARED_NON |        \
-                               TCR_ORGN_WBWA |         \
-                               TCR_IRGN_WBWA |         \
-                               TCR_T0SZ(VA_BITS))
+#define TCR_EL1_RSVD           (1 << 31)
+#define TCR_EL2_RSVD           (1 << 31 | 1 << 23)
+#define TCR_EL3_RSVD           (1 << 31 | 1 << 23)
 
 #ifndef __ASSEMBLY__
-void set_pgtable_section(u64 *page_table, u64 index,
-                        u64 section, u64 memory_type);
 static inline void set_ttbr_tcr_mair(int el, u64 table, u64 tcr, u64 attr)
 {
        asm volatile("dsb sy");
@@ -131,5 +133,14 @@ static inline void set_ttbr_tcr_mair(int el, u64 table, u64 tcr, u64 attr)
        }
        asm volatile("isb");
 }
+
+struct mm_region {
+       u64 base;
+       u64 size;
+       u64 attrs;
+};
+
+extern struct mm_region *mem_map;
 #endif
+
 #endif /* _ASM_ARMV8_MMU_H_ */