sh: Lazy dcache writeback optimizations.
[linux-2.6/btrfs-unstable.git] / arch / sh / mm / tlb-sh3.c
blob16627069c53610a2930013c6c2886003068dc0a5
1 /*
2 * arch/sh/mm/tlb-sh3.c
4 * SH-3 specific TLB operations
6 * Copyright (C) 1999 Niibe Yutaka
7 * Copyright (C) 2002 Paul Mundt
9 * Released under the terms of the GNU GPL v2.0.
11 #include <linux/io.h>
12 #include <asm/system.h>
13 #include <asm/mmu_context.h>
15 void __flush_tlb_page(unsigned long asid, unsigned long page)
17 unsigned long addr, data;
18 int i, ways = MMU_NTLB_WAYS;
21 * NOTE: PTEH.ASID should be set to this MM
22 * _AND_ we need to write ASID to the array.
24 * It would be simple if we didn't need to set PTEH.ASID...
26 addr = MMU_TLB_ADDRESS_ARRAY | (page & 0x1F000);
27 data = (page & 0xfffe0000) | asid; /* VALID bit is off */
29 if ((cpu_data->flags & CPU_HAS_MMU_PAGE_ASSOC)) {
30 addr |= MMU_PAGE_ASSOC_BIT;
31 ways = 1; /* we already know the way .. */
34 for (i = 0; i < ways; i++)
35 ctrl_outl(data, addr + (i << 8));