xserver: Branch 'server-1.7-nominations' - 4 commits

Peter Hutterer whot at kemper.freedesktop.org
Wed Oct 14 21:15:05 PDT 2009


 hw/xfree86/os-support/linux/lnx_axp.c  |   16 +++-----
 hw/xfree86/os-support/linux/lnx_ev56.c |   18 ++++++---
 hw/xfree86/os-support/misc/SlowBcopy.c |   62 ++++++++++++++++++++-------------
 3 files changed, 57 insertions(+), 39 deletions(-)

New commits:
commit 07229cd6da6a9b7acedb994275fed5b512fe48b1
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Oct 13 20:42:14 2009 -0400

    [alpha] assume we have __NR_pciconfig_iobase
    
    The code path if we didn't have support has been broken since before we
    switched to git.
    
    The pciconfig_iobase syscall has been supported since 2000.
    
    Signed-off-by: Matt Turner <mattst88 at gmail.com>
    (cherry picked from commit 5e762f0e2f203b5121a3de3b9af3c8981b31a77f)

diff --git a/hw/xfree86/os-support/linux/lnx_axp.c b/hw/xfree86/os-support/linux/lnx_axp.c
index 34129cc..10b97b0 100644
--- a/hw/xfree86/os-support/linux/lnx_axp.c
+++ b/hw/xfree86/os-support/linux/lnx_axp.c
@@ -138,16 +138,12 @@ long (*_iobase)(unsigned, int, int, int) = _alpha_iobase_query;
 static long
 _alpha_iobase(unsigned flags, int hose, int bus, int devfn)
 {
-#ifdef __NR_pciconfig_iobase
   if (bus < 0) {
     bus = hose;
     flags |= IOBASE_FROM_HOSE;
   }
 
   return syscall(__NR_pciconfig_iobase, flags, bus, devfn);
-#else
-  return -ENOSYS
-#endif
 }
 
 static long
commit 13c5e2fe9c7ce82dfdc026a392327b115d8c6a15
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Oct 13 20:40:59 2009 -0400

    [alpha] don't return from void functions
    
    Signed-off-by: Matt Turner <mattst88 at gmail.com>
    (cherry picked from commit 46785c04bca16f495af3ed8d685aee939a1a8f39)

diff --git a/hw/xfree86/os-support/linux/lnx_ev56.c b/hw/xfree86/os-support/linux/lnx_ev56.c
index e751da2..c65e1cc 100644
--- a/hw/xfree86/os-support/linux/lnx_ev56.c
+++ b/hw/xfree86/os-support/linux/lnx_ev56.c
@@ -94,28 +94,34 @@ writeDense32(int Value, pointer Base, register unsigned long Offset)
 void
 _dense_outb(char val, unsigned long port)
 {
-  if ((port & ~0xffff) == 0) return _outb(val, port);
-
+  if ((port & ~0xffff) == 0) {
+  _outb(val, port);
+  } else {
   write_mem_barrier();
   *(volatile CARD8 *)port = val;
+  }
 }
 
 void
 _dense_outw(short val, unsigned long port)
 {
-  if ((port & ~0xffff) == 0) return _outw(val, port);
-
+  if ((port & ~0xffff) == 0) {
+  _outw(val, port);
+  } else {
   write_mem_barrier();
   *(volatile CARD16 *)port = val;
+  }
 }
 
 void
 _dense_outl(int val, unsigned long port)
 {
-  if ((port & ~0xffff) == 0) return _outl(val, port);
-
+  if ((port & ~0xffff) == 0) {
+  _outl(val, port);
+  } else {
   write_mem_barrier();
   *(volatile CARD32 *)port = val;
+  }
 }
 
 unsigned int
commit fff0b2013ad40c6116e92a9c5e233da4a34e6943
Author: Michael Cree <mcree at orcon.net.nz>
Date:   Wed Oct 7 18:33:29 2009 -0400

    Fix undefined symbols on alpha
    
    Signed-off-by: Matt Turner <mattst88 at gmail.com>
    (cherry picked from commit 34eddbbb73bb16395dba0818247909c1b4bee4c2)

diff --git a/hw/xfree86/os-support/linux/lnx_axp.c b/hw/xfree86/os-support/linux/lnx_axp.c
index 8571c04..34129cc 100644
--- a/hw/xfree86/os-support/linux/lnx_axp.c
+++ b/hw/xfree86/os-support/linux/lnx_axp.c
@@ -125,12 +125,12 @@ extern unsigned int _dense_inb(unsigned long);
 extern unsigned int _dense_inw(unsigned long);
 extern unsigned int _dense_inl(unsigned long);
 
-void (*_alpha_outb)(char, unsigned long) = _outb;
-void (*_alpha_outw)(short, unsigned long) = _outw;
-void (*_alpha_outl)(int, unsigned long) = _outl;
-unsigned int (*_alpha_inb)(unsigned long) = _inb;
-unsigned int (*_alpha_inw)(unsigned long) = _inw;
-unsigned int (*_alpha_inl)(unsigned long) = _inl;
+_X_EXPORT void (*_alpha_outb)(char, unsigned long) = _outb;
+_X_EXPORT void (*_alpha_outw)(short, unsigned long) = _outw;
+_X_EXPORT void (*_alpha_outl)(int, unsigned long) = _outl;
+_X_EXPORT unsigned int (*_alpha_inb)(unsigned long) = _inb;
+_X_EXPORT unsigned int (*_alpha_inw)(unsigned long) = _inw;
+_X_EXPORT unsigned int (*_alpha_inl)(unsigned long) = _inl;
 
 static long _alpha_iobase_query(unsigned, int, int, int);
 long (*_iobase)(unsigned, int, int, int) = _alpha_iobase_query;
commit a08186fe59f003fc9e1edceb1d95d2e316766e2a
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Oct 6 20:58:30 2009 -0400

    Fix breakage on alpha caused by c7680befe5ae
    
    Pinpointed by by Michael Cree.
    
    Commit c7680befe5ae removed Jensen support, but at the same time broke
    support for dense memory systems.
    
    Signed-off-by: Matt Turner <mattst88 at gmail.com>
    (cherry picked from commit 9625f6d328d6f516520930227b218979309938bc)

diff --git a/hw/xfree86/os-support/misc/SlowBcopy.c b/hw/xfree86/os-support/misc/SlowBcopy.c
index 182a3e6..0021b55 100644
--- a/hw/xfree86/os-support/misc/SlowBcopy.c
+++ b/hw/xfree86/os-support/misc/SlowBcopy.c
@@ -59,10 +59,16 @@ xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
 
 #ifdef linux
 
+unsigned long _bus_base(void);
+
+#define useSparse() (!_bus_base())
+
 #define SPARSE (7)
 
 #else
 
+#define useSparse() 0
+
 #define SPARSE 0
 
 #endif
@@ -70,32 +76,42 @@ xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
 void
 xf86SlowBCopyFromBus(unsigned char *src, unsigned char *dst, int count)
 {
-    unsigned long addr;
-    long result;
-
-    addr = (unsigned long) src;
-    while( count ){
-	result = *(volatile int *) addr;
-	result >>= ((addr>>SPARSE) & 3) * 8;
-	*dst++ = (unsigned char) (0xffUL & result);
-	addr += 1<<SPARSE;
-	count--;
-	outb(0x80, 0x00);
-    }
+	if (useSparse())
+	{
+		unsigned long addr;
+		long result;
+
+		addr = (unsigned long) src;
+		while (count) {
+			result = *(volatile int *) addr;
+			result >>= ((addr>>SPARSE) & 3) * 8;
+			*dst++ = (unsigned char) (0xffUL & result);
+			addr += 1<<SPARSE;
+			count--;
+			outb(0x80, 0x00);
+		}
+	}
+	else
+		xf86SlowBcopy(src, dst, count);
 }
-  
+
 void
 xf86SlowBCopyToBus(unsigned char *src, unsigned char *dst, int count)
 {
-    unsigned long addr;
-
-    addr = (unsigned long) dst;
-    while(count) {
-	*(volatile unsigned int *) addr = (unsigned short)(*src) * 0x01010101;
-	src++;
-	addr += 1<<SPARSE;
-	count--;
-	outb(0x80, 0x00);
-    }
+	if (useSparse())
+	{
+		unsigned long addr;
+
+		addr = (unsigned long) dst;
+		while (count) {
+			*(volatile unsigned int *) addr = (unsigned short)(*src) * 0x01010101;
+			src++;
+			addr += 1<<SPARSE;
+			count--;
+			outb(0x80, 0x00);
+		}
+	}
+	else
+		xf86SlowBcopy(src, dst, count);
 }
 #endif


More information about the xorg-commit mailing list