/* This function depends on the pages to be flushed having the G (global) bit set in their pte. This is true for all PAGE_KERNEL(_RO) pages.  */
void flush_tlb_kernel_range(unsigned long start, unsigned long end)
/* This function depends on the pages to be flushed having the G (global) bit set in their pte. This is true for all PAGE_KERNEL(_RO) pages.  */
void flush_tlb_kernel_range(unsigned long start, unsigned long end)
{
	unsigned long flags;
	int size;
	size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
	if (size > (MMU_DTLB_ENTRIES / 4)) {
		flush_tlb_all();
	} else {
		unsigned long asid;
		local_irq_save(flags);
		asid = get_asid();
		start &= PAGE_MASK;
		end += (PAGE_SIZE - 1);
		end &= PAGE_MASK;
		while (start < end) {
			__flush_tlb_page(asid, start);
			start += PAGE_SIZE;
		}
		local_irq_restore(flags);
	}
}