patch-2.4.20 linux-2.4.20/arch/mips/dec/wbflush.c
Next file: linux-2.4.20/arch/mips/defconfig
Previous file: linux-2.4.20/arch/mips/dec/time.c
Back to the patch index
Back to the overall index
- Lines: 96
- Date:
Thu Nov 28 15:53:10 2002
- Orig file:
linux-2.4.19/arch/mips/dec/wbflush.c
- Orig date:
Fri Oct 5 12:06:51 2001
diff -urN linux-2.4.19/arch/mips/dec/wbflush.c linux-2.4.20/arch/mips/dec/wbflush.c
@@ -11,15 +11,18 @@
* for more details.
*
* Copyright (C) 1998 Harald Koerfgen
+ * Copyright (C) 2002 Maciej W. Rozycki
*/
-#include <asm/bootinfo.h>
#include <linux/init.h>
+#include <asm/bootinfo.h>
+#include <asm/system.h>
+#include <asm/wbflush.h>
+
static void wbflush_kn01(void);
static void wbflush_kn210(void);
-static void wbflush_kn02ba(void);
-static void wbflush_kn03(void);
+static void wbflush_mips(void);
void (*__wbflush) (void);
@@ -27,28 +30,23 @@
{
switch (mips_machtype) {
case MACH_DS23100:
- __wbflush = wbflush_kn01;
- break;
- case MACH_DS5100: /* DS5100 MIPSMATE */
- __wbflush = wbflush_kn210;
- break;
case MACH_DS5000_200: /* DS5000 3max */
- __wbflush = wbflush_kn01;
- break;
+ __wbflush = wbflush_kn01;
+ break;
+ case MACH_DS5100: /* DS5100 MIPSMATE */
+ __wbflush = wbflush_kn210;
+ break;
case MACH_DS5000_1XX: /* DS5000/100 3min */
- __wbflush = wbflush_kn02ba;
- break;
- case MACH_DS5000_2X0: /* DS5000/240 3max+ */
- __wbflush = wbflush_kn03;
- break;
case MACH_DS5000_XX: /* Personal DS5000/2x */
- __wbflush = wbflush_kn02ba;
- break;
+ case MACH_DS5000_2X0: /* DS5000/240 3max+ */
+ default:
+ __wbflush = wbflush_mips;
+ break;
}
}
/*
- * For the DS3100 and DS5000/200 the writeback buffer functions
+ * For the DS3100 and DS5000/200 the R2020/R3220 writeback buffer functions
* as part of Coprocessor 0.
*/
static void wbflush_kn01(void)
@@ -78,29 +76,16 @@
"mtc0\t$2,$12\n\t"
"nop\n\t"
".set\tpop"
- : : :"$2", "$3");
-}
-
-/*
- * Looks like some magic with the System Interrupt Mask Register
- * in the famous IOASIC for kmins and maxines.
- */
-static void wbflush_kn02ba(void)
-{
- asm(".set\tpush\n\t"
- ".set\tnoreorder\n\t"
- "lui\t$2,0xbc04\n\t"
- "lw\t$3,0x120($2)\n\t"
- "lw\t$3,0x120($2)\n\t"
- ".set\tpop"
- : : :"$2", "$3");
+ : : : "$2", "$3");
}
/*
- * The DS500/2x0 doesnt need to write back the WB.
+ * I/O ASIC systems use a standard writeback buffer that gets flushed
+ * upon an uncached read.
*/
-static void wbflush_kn03(void)
+static void wbflush_mips(void)
{
+ __fast_iob();
}
#include <linux/module.h>
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)