2 * andes.c: MMU and cache operations for the R10000 (ANDES).
4 * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
6 #include <linux/init.h>
7 #include <linux/kernel.h>
8 #include <linux/sched.h>
11 #include <asm/pgtable.h>
12 #include <asm/system.h>
13 #include <asm/sgialib.h>
14 #include <asm/mmu_context.h>
17 void andes_clear_page(void * page)
41 static void andes_copy_page(void * to, void * from)
43 unsigned long dummy1, dummy2;
44 unsigned long reg1, reg2, reg3, reg4;
87 :"=r" (dummy1), "=r" (dummy2),
88 "=&r" (reg1), "=&r" (reg2), "=&r" (reg3), "=&r" (reg4)
89 :"0" (to), "1" (from),
93 /* Cache operations. XXX Write these dave... */
94 static inline void andes_flush_cache_all(void)
99 static void andes_flush_cache_mm(struct mm_struct *mm)
104 static void andes_flush_cache_range(struct mm_struct *mm,
111 static void andes_flush_cache_page(struct vm_area_struct *vma,
117 static void andes_flush_page_to_ram(struct page * page)
122 static void andes_flush_cache_sigtramp(unsigned long page)
127 /* TLB operations. XXX Write these dave... */
128 void flush_tlb_all(void)
133 void flush_tlb_mm(struct mm_struct *mm)
138 void flush_tlb_range(struct mm_struct *mm, unsigned long start,
144 void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
149 void load_pgd(unsigned long pg_dir)
153 void pgd_init(unsigned long page)
157 void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
158 unsigned long entryhi, unsigned long pagemask)
163 void __init ld_mmu_andes(void)
165 _clear_page = andes_clear_page;
166 _copy_page = andes_copy_page;
168 _flush_cache_all = andes_flush_cache_all;
169 _flush_cache_mm = andes_flush_cache_mm;
170 _flush_cache_range = andes_flush_cache_range;
171 _flush_cache_page = andes_flush_cache_page;
172 _flush_cache_sigtramp = andes_flush_cache_sigtramp;
173 _flush_page_to_ram = andes_flush_page_to_ram;