+
+Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
+
+ * mini-ppc.c: portability fixes.
+
2008-11-14 Zoltan Varga <vargaz@gmail.com>
* mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
void
mono_arch_flush_icache (guint8 *code, gint size)
{
- guint8 *p, *endp, *start;
+ register guint8 *p;
+ guint8 *endp, *start;
static int cachelinesize = 0;
static int cachelineinc = 16;
}
if (!cachelinesize)
cachelinesize = 128;
+#elif defined(G_COMPILER_CODEWARRIOR)
+ cachelinesize = 32;
+ cachelineinc = 32;
#else
#warning Need a way to get cache line size
cachelinesize = 128;
endp = p + size;
start = (guint8*)((gsize)start & ~(cachelinesize - 1));
/* use dcbf for smp support, later optimize for UP, see pem._64bit.d20030611.pdf page 211 */
+#if defined(G_COMPILER_CODEWARRIOR)
+ if (1) {
+ for (p = start; p < endp; p += cachelineinc) {
+ asm { dcbf 0, p };
+ }
+ } else {
+ for (p = start; p < endp; p += cachelineinc) {
+ asm { dcbst 0, p };
+ }
+ }
+ asm { sync };
+ p = code;
+ for (p = start; p < endp; p += cachelineinc) {
+ asm {
+ icbi 0, p
+ sync
+ }
+ }
+ asm {
+ sync
+ isync
+ }
+#else
if (1) {
for (p = start; p < endp; p += cachelineinc) {
asm ("dcbf 0,%0;" : : "r"(p) : "memory");
}
asm ("sync");
asm ("isync");
+#endif
}
void