diff options
Diffstat (limited to 'arch/arm64/mm/proc.S')
-rw-r--r-- | arch/arm64/mm/proc.S | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S index 1333e6f9a8e5..e085ee6ef4e2 100644 --- a/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S | |||
@@ -173,12 +173,6 @@ ENDPROC(cpu_do_switch_mm) | |||
173 | * value of the SCTLR_EL1 register. | 173 | * value of the SCTLR_EL1 register. |
174 | */ | 174 | */ |
175 | ENTRY(__cpu_setup) | 175 | ENTRY(__cpu_setup) |
176 | /* | ||
177 | * Preserve the link register across the function call. | ||
178 | */ | ||
179 | mov x28, lr | ||
180 | bl __flush_dcache_all | ||
181 | mov lr, x28 | ||
182 | ic iallu // I+BTB cache invalidate | 176 | ic iallu // I+BTB cache invalidate |
183 | tlbi vmalle1is // invalidate I + D TLBs | 177 | tlbi vmalle1is // invalidate I + D TLBs |
184 | dsb sy | 178 | dsb sy |
@@ -215,8 +209,14 @@ ENTRY(__cpu_setup) | |||
215 | * Set/prepare TCR and TTBR. We use 512GB (39-bit) address range for | 209 | * Set/prepare TCR and TTBR. We use 512GB (39-bit) address range for |
216 | * both user and kernel. | 210 | * both user and kernel. |
217 | */ | 211 | */ |
218 | ldr x10, =TCR_TxSZ(VA_BITS) | TCR_FLAGS | TCR_IPS_40BIT | \ | 212 | ldr x10, =TCR_TxSZ(VA_BITS) | TCR_FLAGS | \ |
219 | TCR_ASID16 | TCR_TBI0 | (1 << 31) | 213 | TCR_ASID16 | TCR_TBI0 | (1 << 31) |
214 | /* | ||
215 | * Read the PARange bits from ID_AA64MMFR0_EL1 and set the IPS bits in | ||
216 | * TCR_EL1. | ||
217 | */ | ||
218 | mrs x9, ID_AA64MMFR0_EL1 | ||
219 | bfi x10, x9, #32, #3 | ||
220 | #ifdef CONFIG_ARM64_64K_PAGES | 220 | #ifdef CONFIG_ARM64_64K_PAGES |
221 | orr x10, x10, TCR_TG0_64K | 221 | orr x10, x10, TCR_TG0_64K |
222 | orr x10, x10, TCR_TG1_64K | 222 | orr x10, x10, TCR_TG1_64K |