]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-mips/hazards.h
Merge git://git.infradead.org/battery-2.6
[linux-2.6-omap-h63xx.git] / include / asm-mips / hazards.h
index 50073157a617dfcd0583bb8cfde6621285953736..918a4894b587d10fe8450a96239ad42f0b7e63e5 100644 (file)
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 2003, 2004 Ralf Baechle <ralf@linux-mips.org>
+ * Copyright (C) 2003, 04, 07 Ralf Baechle <ralf@linux-mips.org>
  * Copyright (C) MIPS Technologies, Inc.
  *   written by Ralf Baechle <ralf@linux-mips.org>
  */
@@ -23,6 +23,11 @@ static inline void name(void)                                                \
        __asm__ __volatile__ (#name);                                   \
 }
 
+/*
+ * MIPS R2 instruction hazard barrier.   Needs to be called as a subroutine.
+ */
+extern void mips_ihb(void);
+
 #endif
 
 ASMMACRO(_ssnop,
@@ -52,6 +57,7 @@ ASMMACRO(tlb_probe_hazard,
         _ehb
        )
 ASMMACRO(irq_enable_hazard,
+        _ehb
        )
 ASMMACRO(irq_disable_hazard,
        _ehb
@@ -177,4 +183,36 @@ ASMMACRO(back_to_back_c0_hazard,
 
 #endif
 
+
+/* FPU hazards */
+
+#if defined(CONFIG_CPU_SB1)
+ASMMACRO(enable_fpu_hazard,
+        .set   push;
+        .set   mips64;
+        .set   noreorder;
+        _ssnop;
+        bnezl  $0,.+4;
+        _ssnop;
+        .set   pop
+)
+ASMMACRO(disable_fpu_hazard,
+)
+
+#elif defined(CONFIG_CPU_MIPSR2)
+ASMMACRO(enable_fpu_hazard,
+        _ehb
+)
+ASMMACRO(disable_fpu_hazard,
+        _ehb
+)
+#else
+ASMMACRO(enable_fpu_hazard,
+        nop; nop; nop; nop
+)
+ASMMACRO(disable_fpu_hazard,
+        _ehb
+)
+#endif
+
 #endif /* _ASM_HAZARDS_H */