* Rohit Seth <rohit.seth@intel.com>
* Ken Chen <kenneth.w.chen@intel.com>
*/
+#include <linux/config.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
nbits = purge.max_bits;
start &= ~((1UL << nbits) - 1);
+# ifdef CONFIG_SMP
+ platform_global_tlb_purge(mm, start, end, nbits);
+# else
preempt_disable();
-#ifdef CONFIG_SMP
- if (mm != current->active_mm || cpus_weight(mm->cpu_vm_mask) != 1) {
- platform_global_tlb_purge(mm, start, end, nbits);
- preempt_enable();
- return;
- }
-#endif
do {
ia64_ptcl(start, (nbits<<2));
start += (1UL << nbits);
} while (start < end);
preempt_enable();
+# endif
+
ia64_srlz_i(); /* srlz.i implies srlz.d */
}
EXPORT_SYMBOL(flush_tlb_range);