[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: What's the status on Xfree86 4.1.0?



I think this patch is roughly what's needed to fix the ARM cache coherency 
problem.

Branden, could you also turn loader debugging off again for arm in the next 
package version?

Thanks

p.

--- xc/programs/Xserver/hw/xfree86/common/compiler.h.old	Wed Oct 31 11:08:16 2001
+++ xc/programs/Xserver/hw/xfree86/common/compiler.h	Wed Oct 31 11:15:43 2001
@@ -1211,6 +1211,16 @@
     outl(val, port);
 }
 
+#define arm_flush_cache(addr)						\
+do {									\
+  register unsigned long _beg __asm ("a1") = (unsigned long) (addr);	\
+  register unsigned long _end __asm ("a2") = (unsigned long) (addr) + 4;\
+  register unsigned long _flg __asm ("a3") = 0;				\
+  __asm __volatile ("swi 0x9f0002		@ sys_cacheflush"	\
+    : "=r" (_beg)							\
+    : "0" (_beg), "r" (_end), "r" (_flg));				\
+} while (0)
+
 #else /* ix86 */
 
 #define ldq_u(p)	(*((unsigned long  *)(p)))
--- xc/programs/Xserver/hw/xfree86/loader/elfloader.c.old	Wed Oct 31 11:08:17 2001
+++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c	Wed Oct 31 11:15:38 2001
@@ -2077,6 +2077,7 @@
             val = symval - (unsigned long)dest32 + val;	
             val >>= 2;
 	    *dest32 = (*dest32 & 0xff000000) | (val & 0x00ffffff); 
+	    arm_flush_cache(dest32);
 	    }
 	    break;
 




Reply to: