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