Imported Debian patch 2:1.15.1-0ubuntu2.6
[deb_xorg-server.git] / debian / patches / 08_xfree86_fix_ia64_inx_outx.diff
diff --git a/debian/patches/08_xfree86_fix_ia64_inx_outx.diff b/debian/patches/08_xfree86_fix_ia64_inx_outx.diff
new file mode 100644 (file)
index 0000000..10dbbe9
--- /dev/null
@@ -0,0 +1,64 @@
+From: Stephan Schreiber <info@fs-driver.org>
+Subject: xfree86: restore {in,out}{b,w,l} on linux/ia64
+
+Call the equivalent glibc functions.
+
+Debian bug #685750
+
+--- a/hw/xfree86/common/compiler.h
++++ b/hw/xfree86/common/compiler.h
+@@ -438,6 +438,54 @@ extern _X_EXPORT unsigned int inl(unsign
+ #include <machine/pio.h>
+ #endif                          /* __NetBSD__ */
++#elif defined(linux) && defined(__ia64__)
++/* for Linux on ia64, we use the LIBC _inx/_outx routines */
++/* note that the appropriate setup via "ioperm" needs to be done */
++/*  *before* any inx/outx is done. */
++
++extern _X_EXPORT void _outb(unsigned char val, unsigned long port);
++extern _X_EXPORT void _outw(unsigned short val, unsigned long port);
++extern _X_EXPORT void _outl(unsigned int val, unsigned long port);
++extern _X_EXPORT unsigned int _inb(unsigned long port);
++extern _X_EXPORT unsigned int _inw(unsigned long port);
++extern _X_EXPORT unsigned int _inl(unsigned long port);
++
++static __inline__ void
++outb(unsigned long port, unsigned char val)
++{
++    _outb(val, port);
++}
++
++static __inline__ void
++outw(unsigned long port, unsigned short val)
++{
++    _outw(val, port);
++}
++
++static __inline__ void
++outl(unsigned long port, unsigned int val)
++{
++    _outl(val, port);
++}
++
++static __inline__ unsigned int
++inb(unsigned long port)
++{
++    return _inb(port);
++}
++
++static __inline__ unsigned int
++inw(unsigned long port)
++{
++    return _inw(port);
++}
++
++static __inline__ unsigned int
++inl(unsigned long port)
++{
++    return _inl(port);
++}
++
+ #elif (defined(linux) || defined(__FreeBSD__)) && defined(__amd64__)
+ #include <inttypes.h>