Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
        args.end = end;
 
        on_each_cpu(local_r4k_flush_icache_range, &args, 1, 1);
+       instruction_hazard();
 }
 
 /*
 
 
 #endif
 
+#if defined(CONFIG_CPU_MIPS32_R2) || defined (CONFIG_CPU_MIPS64_R2)
+#define instruction_hazard()                                           \
+do {                                                                   \
+__label__ __next;                                                      \
+       __asm__ __volatile__(                                           \
+       "       jr.hb   %0                                      \n"     \
+       :                                                               \
+       : "r" (&&__next));                                              \
+__next:                                                                        \
+       ;                                                               \
+} while (0)
+
+#else
+#define instruction_hazard() do { } while (0)
+#endif
+
 #endif /* __ASSEMBLY__ */
 
 #endif /* _ASM_HAZARDS_H */