diff options
Diffstat (limited to 'arch/sh/kernel/smp.c')
| -rw-r--r-- | arch/sh/kernel/smp.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index de6be008fc01..a66f2aa53dac 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c @@ -150,7 +150,9 @@ int __cpu_disable(void)  	 * from the vm mask set of all processes.  	 */  	flush_cache_all(); +#ifdef CONFIG_MMU  	local_flush_tlb_all(); +#endif  	clear_tasks_mm_cpumask(cpu); @@ -183,8 +185,10 @@ asmlinkage void start_secondary(void)  	atomic_inc(&mm->mm_count);  	atomic_inc(&mm->mm_users);  	current->active_mm = mm; +#ifdef CONFIG_MMU  	enter_lazy_tlb(mm, current);  	local_flush_tlb_all(); +#endif  	per_cpu_trap_init(); @@ -328,6 +332,8 @@ int setup_profiling_timer(unsigned int multiplier)  	return 0;  } +#ifdef CONFIG_MMU +  static void flush_tlb_all_ipi(void *info)  {  	local_flush_tlb_all(); @@ -467,3 +473,5 @@ void flush_tlb_one(unsigned long asid, unsigned long vaddr)  	smp_call_function(flush_tlb_one_ipi, (void *)&fd, 1);  	local_flush_tlb_one(asid, vaddr);  } + +#endif  |