From e864d1d4f92dd36defa75542d35dffb95b5d05ec Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Tue, 12 Jul 2005 18:35:38 +0000 Subject: [PATCH] --- yaml --- r: 11150 b: refs/heads/master c: cc61c1fede7d02cb8133ab0952ca3f3ba1f7fbb1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/mips/mm/c-r4k.c | 1 + trunk/include/asm-mips/hazards.h | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index bb1e8cd01bd9..767239c0c8dd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bbc7f22f6dca8a075b565ade49e9a982f89707c3 +refs/heads/master: cc61c1fede7d02cb8133ab0952ca3f3ba1f7fbb1 diff --git a/trunk/arch/mips/mm/c-r4k.c b/trunk/arch/mips/mm/c-r4k.c index b90147399ea4..08d7229a0688 100644 --- a/trunk/arch/mips/mm/c-r4k.c +++ b/trunk/arch/mips/mm/c-r4k.c @@ -529,6 +529,7 @@ static void r4k_flush_icache_range(unsigned long __user start, args.end = end; on_each_cpu(local_r4k_flush_icache_range, &args, 1, 1); + instruction_hazard(); } /* diff --git a/trunk/include/asm-mips/hazards.h b/trunk/include/asm-mips/hazards.h index 181f08de889c..f63d824e6e48 100644 --- a/trunk/include/asm-mips/hazards.h +++ b/trunk/include/asm-mips/hazards.h @@ -228,6 +228,22 @@ __asm__( #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 */