#else
#define THREAD_SIZE PAGE_SIZE
#endif
-
+
#ifndef __ASSEMBLY__
-
+
#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
#define free_user_page(page, addr) free_page(addr)
static inline void clear_page(void *page)
{
- unsigned long data, tmp;
- void *sp = page;
-
- data = 0;
+ unsigned long tmp;
+ unsigned long *sp = page;
- *((unsigned long *)(page))++ = 0;
- *((unsigned long *)(page))++ = 0;
- *((unsigned long *)(page))++ = 0;
- *((unsigned long *)(page))++ = 0;
+ *sp++ = 0;
+ *sp++ = 0;
+ *sp++ = 0;
+ *sp++ = 0;
__asm__ __volatile__("1:\t"
".chip 68040\n\t"
"subqw #8,%2\n\t"
"subqw #8,%2\n\t"
"dbra %1,1b\n\t"
- : "=a" (page), "=d" (tmp)
- : "a" (sp), "0" (page),
+ : "=a" (sp), "=d" (tmp)
+ : "a" (page), "0" (sp),
"1" ((PAGE_SIZE - 16) / 16 - 1));
}
#endif
#define clear_user_page(addr, vaddr, page) \
- do { clear_page(addr); \
+ do { clear_page(addr); \
flush_dcache_page(page); \
} while (0)
#define copy_user_page(to, from, vaddr, page) \