aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJayachandran C <jchandra@broadcom.com>2014-04-29 10:37:47 -0400
committerRalf Baechle <ralf@linux-mips.org>2014-05-30 10:48:25 -0400
commite9126418dd7a86bee32d2dae37df403f7f1e2a13 (patch)
treef4ed5bce0aefa196e28535505ea52cab44b6e4ac /arch
parenta3deecfaa36662ca2e2104be3c305236cf03efcc (diff)
MIPS: Netlogic: Enable access to more than 64GB
The ELPA bit needs to be set in the PAGEGRAIN register to enable access to >64GB physical address. Update reset.S to do this from every hardware thread. Signed-off-by: Jayachandran C <jchandra@broadcom.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/6866/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-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