On Fri, 2005-01-14 at 16:34 +0100, Jerome Glisse wrote:
> 
> Anyway i wanted to ask mesa folks how to make a real
> proper patch. The fact is that INREG & OUTREG in
> server/radeon_macros.h have to do endian swapping.
> Moreover the swapping is only needed for r300, isn't it ?
> So do we need to have our own copy of radeon_macros.h
> insted of using the one from dri/radeon/ ?

No. Try this patch, which is quite ugly though, most of this shouldn't
be in driver specific code IMHO.

 
-- 
Earthling Michel DÃnzer      |     Debian (powerpc), X and DRI developer
Libre software enthusiast    |   http://svcs.affero.net/rm.php?r=daenzer
Index: ./src/mesa/drivers/dri/radeon/server/radeon_macros.h
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/radeon/server/radeon_macros.h,v
retrieving revision 1.2
diff -p -u -r1.2 radeon_macros.h
--- ./src/mesa/drivers/dri/radeon/server/radeon_macros.h	6 Aug 2003 18:11:00 -0000	1.2
+++ ./src/mesa/drivers/dri/radeon/server/radeon_macros.h	14 Jan 2005 17:19:03 -0000
@@ -41,13 +41,34 @@
 #define _RADEON_MACROS_H_
 
 
+#ifdef __powerpc__
+
+static __inline__ unsigned int
+MMIO_IN32(__volatile__ void *base, const unsigned long offset)
+{
+	register unsigned int val;
+	__asm__ __volatile__(
+			"lwbrx %0,%1,%2\n\t"
+			"eieio"
+			: "=r" (val)
+			: "b" (base), "r" (offset),
+			  "m" (*((volatile unsigned char *)base+offset)));
+	return val;
+}
+
+#else
+
+#  define MMIO_IN32(base, offset) \
+	LE32_TO_CPU(*(volatile unsigned int *)(void *)(((unsigned char*)(base)) + (offset)))
+
+#endif
+
 
 #  define MMIO_IN8(base, offset) \
 	*(volatile unsigned char *)(((unsigned char*)(base)) + (offset))
 #  define MMIO_IN16(base, offset) \
 	*(volatile unsigned short *)(void *)(((unsigned char*)(base)) + (offset))
-#  define MMIO_IN32(base, offset) \
-	*(volatile unsigned int *)(void *)(((unsigned char*)(base)) + (offset))
+
 #  define MMIO_OUT8(base, offset, val) \
 	*(volatile unsigned char *)(((unsigned char*)(base)) + (offset)) = (val)
 #  define MMIO_OUT16(base, offset, val) \
@@ -55,7 +76,6 @@
 #  define MMIO_OUT32(base, offset, val) \
 	*(volatile unsigned int *)(void *)(((unsigned char*)(base)) + (offset)) = (val)
 
-
 				/* Memory mapped register access macros */
 #define INREG8(addr)        MMIO_IN8(RADEONMMIO, addr)
 #define INREG16(addr)       MMIO_IN16(RADEONMMIO, addr)

Reply via email to