Loading arch/arm64/include/asm/pgtable-hwdef.h +5 −1 Original line number Diff line number Diff line Loading @@ -154,8 +154,12 @@ #define TCR_ORGN_WBnWA ((UL(3) << 10) | (UL(3) << 26)) #define TCR_ORGN_MASK ((UL(3) << 10) | (UL(3) << 26)) #define TCR_SHARED ((UL(3) << 12) | (UL(3) << 28)) #define TCR_TG0_4K (UL(0) << 14) #define TCR_TG0_64K (UL(1) << 14) #define TCR_TG1_64K (UL(1) << 30) #define TCR_TG0_16K (UL(2) << 14) #define TCR_TG1_16K (UL(1) << 30) #define TCR_TG1_4K (UL(2) << 30) #define TCR_TG1_64K (UL(3) << 30) #define TCR_ASID16 (UL(1) << 36) #define TCR_TBI0 (UL(1) << 37) Loading arch/arm64/mm/proc.S +14 −11 Original line number Diff line number Diff line Loading @@ -28,14 +28,21 @@ #include "proc-macros.S" #ifndef CONFIG_SMP /* PTWs cacheable, inner/outer WBWA not shareable */ #define TCR_FLAGS TCR_IRGN_WBWA | TCR_ORGN_WBWA #ifdef CONFIG_ARM64_64K_PAGES #define TCR_TG_FLAGS TCR_TG0_64K | TCR_TG1_64K #else #define TCR_TG_FLAGS TCR_TG0_4K | TCR_TG1_4K #endif #ifdef CONFIG_SMP #define TCR_SMP_FLAGS TCR_SHARED #else /* PTWs cacheable, inner/outer WBWA shareable */ #define TCR_FLAGS TCR_IRGN_WBWA | TCR_ORGN_WBWA | TCR_SHARED #define TCR_SMP_FLAGS 0 #endif /* PTWs cacheable, inner/outer WBWA */ #define TCR_CACHE_FLAGS TCR_IRGN_WBWA | TCR_ORGN_WBWA #define MAIR(attr, mt) ((attr) << ((mt) * 8)) /* Loading Loading @@ -224,18 +231,14 @@ ENTRY(__cpu_setup) * Set/prepare TCR and TTBR. We use 512GB (39-bit) address range for * both user and kernel. */ ldr x10, =TCR_TxSZ(VA_BITS) | TCR_FLAGS | \ TCR_ASID16 | TCR_TBI0 | (1 << 31) ldr x10, =TCR_TxSZ(VA_BITS) | TCR_CACHE_FLAGS | TCR_SMP_FLAGS | \ TCR_TG_FLAGS | TCR_ASID16 | TCR_TBI0 /* * Read the PARange bits from ID_AA64MMFR0_EL1 and set the IPS bits in * TCR_EL1. */ mrs x9, ID_AA64MMFR0_EL1 bfi x10, x9, #32, #3 #ifdef CONFIG_ARM64_64K_PAGES orr x10, x10, TCR_TG0_64K orr x10, x10, TCR_TG1_64K #endif msr tcr_el1, x10 ret // return to head.S ENDPROC(__cpu_setup) Loading Loading
arch/arm64/include/asm/pgtable-hwdef.h +5 −1 Original line number Diff line number Diff line Loading @@ -154,8 +154,12 @@ #define TCR_ORGN_WBnWA ((UL(3) << 10) | (UL(3) << 26)) #define TCR_ORGN_MASK ((UL(3) << 10) | (UL(3) << 26)) #define TCR_SHARED ((UL(3) << 12) | (UL(3) << 28)) #define TCR_TG0_4K (UL(0) << 14) #define TCR_TG0_64K (UL(1) << 14) #define TCR_TG1_64K (UL(1) << 30) #define TCR_TG0_16K (UL(2) << 14) #define TCR_TG1_16K (UL(1) << 30) #define TCR_TG1_4K (UL(2) << 30) #define TCR_TG1_64K (UL(3) << 30) #define TCR_ASID16 (UL(1) << 36) #define TCR_TBI0 (UL(1) << 37) Loading
arch/arm64/mm/proc.S +14 −11 Original line number Diff line number Diff line Loading @@ -28,14 +28,21 @@ #include "proc-macros.S" #ifndef CONFIG_SMP /* PTWs cacheable, inner/outer WBWA not shareable */ #define TCR_FLAGS TCR_IRGN_WBWA | TCR_ORGN_WBWA #ifdef CONFIG_ARM64_64K_PAGES #define TCR_TG_FLAGS TCR_TG0_64K | TCR_TG1_64K #else #define TCR_TG_FLAGS TCR_TG0_4K | TCR_TG1_4K #endif #ifdef CONFIG_SMP #define TCR_SMP_FLAGS TCR_SHARED #else /* PTWs cacheable, inner/outer WBWA shareable */ #define TCR_FLAGS TCR_IRGN_WBWA | TCR_ORGN_WBWA | TCR_SHARED #define TCR_SMP_FLAGS 0 #endif /* PTWs cacheable, inner/outer WBWA */ #define TCR_CACHE_FLAGS TCR_IRGN_WBWA | TCR_ORGN_WBWA #define MAIR(attr, mt) ((attr) << ((mt) * 8)) /* Loading Loading @@ -224,18 +231,14 @@ ENTRY(__cpu_setup) * Set/prepare TCR and TTBR. We use 512GB (39-bit) address range for * both user and kernel. */ ldr x10, =TCR_TxSZ(VA_BITS) | TCR_FLAGS | \ TCR_ASID16 | TCR_TBI0 | (1 << 31) ldr x10, =TCR_TxSZ(VA_BITS) | TCR_CACHE_FLAGS | TCR_SMP_FLAGS | \ TCR_TG_FLAGS | TCR_ASID16 | TCR_TBI0 /* * Read the PARange bits from ID_AA64MMFR0_EL1 and set the IPS bits in * TCR_EL1. */ mrs x9, ID_AA64MMFR0_EL1 bfi x10, x9, #32, #3 #ifdef CONFIG_ARM64_64K_PAGES orr x10, x10, TCR_TG0_64K orr x10, x10, TCR_TG1_64K #endif msr tcr_el1, x10 ret // return to head.S ENDPROC(__cpu_setup) Loading