diff options
Diffstat (limited to 'arch/mips/netlogic/xlp/setup.c')
| -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 | } |
