patch-1.3.44 linux/arch/sparc/mm/sun4c_vac.c
Next file: linux/arch/sparc/mm/vac-flush.c
Previous file: linux/arch/sparc/mm/sun4c.c
Back to the patch index
Back to the overall index
-  Lines: 38
 -  Date:
Sat Nov 25 02:59:45 1995
 -  Orig file: 
v1.3.43/linux/arch/sparc/mm/sun4c_vac.c
 -  Orig date: 
Thu Jan  1 02:00:00 1970
 
diff -u --recursive --new-file v1.3.43/linux/arch/sparc/mm/sun4c_vac.c linux/arch/sparc/mm/sun4c_vac.c
@@ -0,0 +1,37 @@
+/* $Id: sun4c_vac.c,v 1.5 1995/11/25 00:59:43 davem Exp $
+ * vac.c:   Routines for flushing various amount of the Sparc VAC
+ *          (virtual address cache) on the sun4c.
+ *
+ * Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu)
+ */
+
+#include <linux/kernel.h>
+
+#include <asm/asi.h>
+#include <asm/contregs.h>
+#include <asm/vac-ops.h>
+#include <asm/page.h>
+
+struct sun4c_vac_props sun4c_vacinfo;
+
+/* Invalidate the entire sun4c VAC, it must be off at this point */
+void
+sun4c_flush_all(void)
+{
+	unsigned long begin, end;
+
+	if(sun4c_vacinfo.on)
+		panic("SUN4C: AIEEE, trying to invalidate vac while"
+                      " it is on.");
+
+	/* Clear 'valid' bit in all cache line tags */
+	begin = AC_CACHETAGS;
+	end = (AC_CACHETAGS + sun4c_vacinfo.num_bytes);
+	while(begin < end) {
+		__asm__ __volatile__("sta %%g0, [%0] %1\n\t" : :
+				     "r" (begin), "i" (ASI_CONTROL));
+		begin += sun4c_vacinfo.linesize;
+	}
+	return;
+}
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this