7 #include <linux/module.h>
9 #include <linux/kernel.h>
10 #include <linux/string.h>
11 #include <linux/types.h>
16 #include <asm/setup.h>
17 #include <asm/segment.h>
19 #include <asm/pgalloc.h>
20 #include <asm/traps.h>
21 #include <asm/machdep.h>
31 #define PD_PTABLE(page) ((ptable_desc *)&(virt_to_page(page)->lru))
32 #define PD_PAGE(ptable) (list_entry(ptable, struct page, lru))
33 #define PD_MARKBITS(dp) (*(unsigned char *)&PD_PAGE(dp)->index)
35 #define PTABLE_SIZE (PTRS_PER_PMD * sizeof(pmd_t))
46 list_add(dp, &ptable_list);
91 for (tmp = 1, off = 0; (mask &
tmp) == 0; tmp <<= 1, off +=
PTABLE_SIZE)
96 list_move_tail(dp, &ptable_list);
109 panic (
"table already free!");
116 cache_page((
void *)page);
119 }
else if (ptable_list.next != dp) {
124 list_move(dp, &ptable_list);
130 static inline void clear040(
unsigned long paddr)
135 "cinvp %%bc,(%0)\n\t"
141 static inline void cleari040(
unsigned long paddr)
146 "cinvp %%ic,(%0)\n\t"
153 static inline void push040(
unsigned long paddr)
158 "cpushp %%bc,(%0)\n\t"
165 static inline void pushcl040(
unsigned long paddr)
217 if ((len -= tmp) <= 0)
223 while ((len -= tmp) >= 0) {
232 asm volatile (
"movec %/cacr,%/d0\n\t"
237 #ifdef CONFIG_M68K_L2_CACHE
275 }
while ((len -= tmp) > 0);
287 asm volatile (
"movec %/cacr,%/d0\n\t"
292 #ifdef CONFIG_M68K_L2_CACHE