mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
MIPS: smp-cps: Don't rely on CP0_CMGCRBASE
CP0_CMGCRBASE is not always available on CPS enabled system such as early proAptiv. For early SMP bring up where we can't safely access memeory, we patch the entry of CPS NMI vector to inject CMGCR address directly into register during early core bringup. For VPE bringup as the core is already coherenct at that point we just read the variable to obtain the address. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
This commit is contained in:
committed by
Thomas Bogendoerfer
parent
dd8314739a
commit
fea8826d5f
@@ -162,6 +162,8 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
|
||||
*/
|
||||
entry_code = (u32 *)&mips_cps_core_entry;
|
||||
uasm_i_addiu(&entry_code, 16, 0, cca);
|
||||
UASM_i_LA(&entry_code, 17, (long)mips_gcr_base);
|
||||
BUG_ON((void *)entry_code > (void *)&mips_cps_core_entry_patch_end);
|
||||
blast_dcache_range((unsigned long)&mips_cps_core_entry,
|
||||
(unsigned long)entry_code);
|
||||
bc_wback_inv((unsigned long)&mips_cps_core_entry,
|
||||
|
||||
Reference in New Issue
Block a user