diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/netlogic/xlp/setup.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/mips/netlogic/xlp/setup.c b/arch/mips/netlogic/xlp/setup.c index acb677a1227c..b3df7c2aad1e 100644 --- a/arch/mips/netlogic/xlp/setup.c +++ b/arch/mips/netlogic/xlp/setup.c | |||
@@ -82,8 +82,10 @@ void __init prom_free_prom_memory(void) | |||
82 | 82 | ||
83 | void xlp_mmu_init(void) | 83 | void xlp_mmu_init(void) |
84 | { | 84 | { |
85 | /* enable extended TLB and Large Fixed TLB */ | ||
85 | write_c0_config6(read_c0_config6() | 0x24); | 86 | write_c0_config6(read_c0_config6() | 0x24); |
86 | current_cpu_data.tlbsize = ((read_c0_config6() >> 16) & 0xffff) + 1; | 87 | |
88 | /* set page mask of Fixed TLB in config7 */ | ||
87 | write_c0_config7(PM_DEFAULT_MASK >> | 89 | write_c0_config7(PM_DEFAULT_MASK >> |
88 | (13 + (ffz(PM_DEFAULT_MASK >> 13) / 2))); | 90 | (13 + (ffz(PM_DEFAULT_MASK >> 13) / 2))); |
89 | } | 91 | } |
@@ -100,6 +102,10 @@ void __init prom_init(void) | |||
100 | nlm_common_ebase = read_c0_ebase() & (~((1 << 12) - 1)); | 102 | nlm_common_ebase = read_c0_ebase() & (~((1 << 12) - 1)); |
101 | #ifdef CONFIG_SMP | 103 | #ifdef CONFIG_SMP |
102 | nlm_wakeup_secondary_cpus(0xffffffff); | 104 | nlm_wakeup_secondary_cpus(0xffffffff); |
105 | |||
106 | /* update TLB size after waking up threads */ | ||
107 | current_cpu_data.tlbsize = ((read_c0_config6() >> 16) & 0xffff) + 1; | ||
108 | |||
103 | register_smp_ops(&nlm_smp_ops); | 109 | register_smp_ops(&nlm_smp_ops); |
104 | #endif | 110 | #endif |
105 | } | 111 | } |