aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mips/netlogic/common/reset.S15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/mips/netlogic/common/reset.S b/arch/mips/netlogic/common/reset.S
index fda772a8595b..13c1bc5b5988 100644
--- a/arch/mips/netlogic/common/reset.S
+++ b/arch/mips/netlogic/common/reset.S
@@ -74,6 +74,18 @@
74.endm 74.endm
75 75
76/* 76/*
77 * Allow access to physical mem >64G by enabling ELPA in PAGEGRAIN
78 * register. This is needed before going to C code since the SP can
79 * in this region. Called from all HW threads.
80 */
81.macro xlp_early_mmu_init
82 mfc0 t0, CP0_PAGEMASK, 1
83 li t1, (1 << 29) /* ELPA bit */
84 or t0, t1
85 mtc0 t0, CP0_PAGEMASK, 1
86.endm
87
88/*
77 * L1D cache has to be flushed before enabling threads in XLP. 89 * L1D cache has to be flushed before enabling threads in XLP.
78 * On XLP8xx/XLP3xx, we do a low level flush using processor control 90 * On XLP8xx/XLP3xx, we do a low level flush using processor control
79 * registers. On XLPII CPUs, usual cache instructions work. 91 * registers. On XLPII CPUs, usual cache instructions work.
@@ -228,6 +240,8 @@ EXPORT(nlm_boot_siblings)
228#endif 240#endif
229 mtc0 t1, CP0_STATUS 241 mtc0 t1, CP0_STATUS
230 242
243 xlp_early_mmu_init
244
231 /* mark CPU ready */ 245 /* mark CPU ready */
232 li t3, CKSEG1ADDR(RESET_DATA_PHYS) 246 li t3, CKSEG1ADDR(RESET_DATA_PHYS)
233 ADDIU t1, t3, BOOT_CPU_READY 247 ADDIU t1, t3, BOOT_CPU_READY
@@ -254,6 +268,7 @@ EXPORT(nlm_reset_entry_end)
254LEAF(nlm_init_boot_cpu) 268LEAF(nlm_init_boot_cpu)
255#ifdef CONFIG_CPU_XLP 269#ifdef CONFIG_CPU_XLP
256 xlp_config_lsu 270 xlp_config_lsu
271 xlp_early_mmu_init
257#endif 272#endif
258 jr ra 273 jr ra
259 nop 274 nop