|
@@ -11,6 +11,11 @@
|
|
|
extern unsigned long va_to_phys(unsigned long address);
|
|
|
extern pte_t *va_to_pte(unsigned long address);
|
|
|
extern unsigned long ioremap_bot, ioremap_base;
|
|
|
+
|
|
|
+#ifdef CONFIG_44x
|
|
|
+extern int icache_44x_need_flush;
|
|
|
+#endif
|
|
|
+
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
|
|
/*
|
|
@@ -562,6 +567,10 @@ static inline unsigned long pte_update(pte_t *p, unsigned long clr,
|
|
|
: "=&r" (old), "=&r" (tmp), "=m" (*p)
|
|
|
: "r" (p), "r" (clr), "r" (set), "m" (*p)
|
|
|
: "cc" );
|
|
|
+#ifdef CONFIG_44x
|
|
|
+ if ((old & _PAGE_USER) && (old & _PAGE_HWEXEC))
|
|
|
+ icache_44x_need_flush = 1;
|
|
|
+#endif
|
|
|
return old;
|
|
|
}
|
|
|
#else
|
|
@@ -582,6 +591,10 @@ static inline unsigned long long pte_update(pte_t *p, unsigned long clr,
|
|
|
: "=&r" (old), "=&r" (tmp), "=m" (*p)
|
|
|
: "r" (p), "r" ((unsigned long)(p) + 4), "r" (clr), "r" (set), "m" (*p)
|
|
|
: "cc" );
|
|
|
+#ifdef CONFIG_44x
|
|
|
+ if ((old & _PAGE_USER) && (old & _PAGE_HWEXEC))
|
|
|
+ icache_44x_need_flush = 1;
|
|
|
+#endif
|
|
|
return old;
|
|
|
}
|
|
|
#endif
|