21 #include <linux/kernel.h>
23 #include <linux/sched.h>
26 #include <asm/tlbflush.h>
27 #include <asm/bitops.h>
28 #include <asm/processor.h>
30 #include <asm/exceptions.h>
31 #include <asm/hardirq.h>
33 #include <asm/mmu_context.h>
34 #include <asm/thread_info.h>
41 #define FLUSH_ALL 0xffffffff
45 static unsigned long flush_va;
54 static void do_flush_tlb_all(
void *
info);
82 cpumask_clear_cpu(cpu_id, &flush_cpumask);
105 BUG_ON(cpumask_empty(&cpumask));
108 cpumask_and(&tmp, &cpumask, cpu_online_mask);
109 BUG_ON(!cpumask_equal(&cpumask, &tmp));
117 spin_lock(&tlbstate_lock);
121 #if NR_CPUS <= BITS_PER_LONG
124 #error Not supported.
130 while (!cpumask_empty(&flush_cpumask))
136 spin_unlock(&tlbstate_lock);
148 cpumask_copy(&cpu_mask, mm_cpumask(mm));
152 if (!cpumask_empty(&cpu_mask))
167 cpumask_copy(&cpu_mask, mm_cpumask(mm));
171 if (!cpumask_empty(&cpu_mask))
188 cpumask_copy(&cpu_mask, mm_cpumask(mm));
192 if (!cpumask_empty(&cpu_mask))
202 static void do_flush_tlb_all(
void *
unused)