diff options
Diffstat (limited to 'include/asm-mips/barrier.h')
-rw-r--r-- | include/asm-mips/barrier.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/asm-mips/barrier.h b/include/asm-mips/barrier.h index 9d8cfbb5e796..8e9ac313ca3b 100644 --- a/include/asm-mips/barrier.h +++ b/include/asm-mips/barrier.h | |||
@@ -92,11 +92,25 @@ | |||
92 | #define fast_wmb() __sync() | 92 | #define fast_wmb() __sync() |
93 | #define fast_rmb() __sync() | 93 | #define fast_rmb() __sync() |
94 | #define fast_mb() __sync() | 94 | #define fast_mb() __sync() |
95 | #ifdef CONFIG_SGI_IP28 | ||
96 | #define fast_iob() \ | ||
97 | __asm__ __volatile__( \ | ||
98 | ".set push\n\t" \ | ||
99 | ".set noreorder\n\t" \ | ||
100 | "lw $0,%0\n\t" \ | ||
101 | "sync\n\t" \ | ||
102 | "lw $0,%0\n\t" \ | ||
103 | ".set pop" \ | ||
104 | : /* no output */ \ | ||
105 | : "m" (*(int *)CKSEG1ADDR(0x1fa00004)) \ | ||
106 | : "memory") | ||
107 | #else | ||
95 | #define fast_iob() \ | 108 | #define fast_iob() \ |
96 | do { \ | 109 | do { \ |
97 | __sync(); \ | 110 | __sync(); \ |
98 | __fast_iob(); \ | 111 | __fast_iob(); \ |
99 | } while (0) | 112 | } while (0) |
113 | #endif | ||
100 | 114 | ||
101 | #ifdef CONFIG_CPU_HAS_WB | 115 | #ifdef CONFIG_CPU_HAS_WB |
102 | 116 | ||