diff --git a/pio_ia64.diff b/pio_ia64.diff new file mode 100644 index 0000000..8601143 --- /dev/null +++ b/pio_ia64.diff @@ -0,0 +1,87 @@ +Index: xorg-server-1.8.0/hw/xfree86/common/compiler.h +=================================================================== +--- xorg-server-1.8.0.orig/hw/xfree86/common/compiler.h ++++ xorg-server-1.8.0/hw/xfree86/common/compiler.h +@@ -409,12 +409,18 @@ extern _X_EXPORT unsigned int inl(unsign + # undef inb + # undef inw + # undef inl +-extern _X_EXPORT void outb(unsigned long port, unsigned char val); +-extern _X_EXPORT void outw(unsigned long port, unsigned short val); +-extern _X_EXPORT void outl(unsigned long port, unsigned int val); +-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); ++#define outb(p,v) outb_ia64(p,v) ++#define outw(p,v) outw_ia64(p,v) ++#define outl(p,v) outl_ia64(p,v) ++#define inb(p) inb_ia64(p) ++#define inw(p) inw_ia64(p) ++#define inl(p) inl_ia64(p) ++extern _X_EXPORT void outb_ia64(unsigned long port, unsigned char val); ++extern _X_EXPORT void outw_ia64(unsigned long port, unsigned short val); ++extern _X_EXPORT void outl_ia64(unsigned long port, unsigned int val); ++extern _X_EXPORT unsigned int inb_ia64(unsigned long port); ++extern _X_EXPORT unsigned int inw_ia64(unsigned long port); ++extern _X_EXPORT unsigned int inl_ia64(unsigned long port); + + # elif (defined(linux) || defined(__FreeBSD__)) && defined(__amd64__) + +Index: xorg-server-1.8.0/hw/xfree86/os-support/shared/ia64Pci.c +=================================================================== +--- xorg-server-1.8.0.orig/hw/xfree86/os-support/shared/ia64Pci.c ++++ xorg-server-1.8.0/hw/xfree86/os-support/shared/ia64Pci.c +@@ -60,7 +60,7 @@ static int ia64_port_to_fd(unsigned long + return (port >> 24) & 0xffffffff; + } + +-void outb(unsigned long port, unsigned char val) ++void outb_ia64(unsigned long port, unsigned char val) + { + int fd = ia64_port_to_fd(port); + +@@ -80,7 +80,7 @@ void outb(unsigned long port, unsigned c + return; + } + +-void outw(unsigned long port, unsigned short val) ++void outw_ia64(unsigned long port, unsigned short val) + { + int fd = ia64_port_to_fd(port); + +@@ -100,7 +100,7 @@ void outw(unsigned long port, unsigned s + return; + } + +-void outl(unsigned long port, unsigned int val) ++void outl_ia64(unsigned long port, unsigned int val) + { + int fd = ia64_port_to_fd(port); + +@@ -120,7 +120,7 @@ void outl(unsigned long port, unsigned i + return; + } + +-unsigned int inb(unsigned long port) ++unsigned int inb_ia64(unsigned long port) + { + int fd = ia64_port_to_fd(port); + unsigned char val; +@@ -142,7 +142,7 @@ unsigned int inb(unsigned long port) + return val; + } + +-unsigned int inw(unsigned long port) ++unsigned int inw_ia64(unsigned long port) + { + int fd = ia64_port_to_fd(port); + unsigned short val; +@@ -164,7 +164,7 @@ unsigned int inw(unsigned long port) + return val; + } + +-unsigned int inl(unsigned long port) ++unsigned int inl_ia64(unsigned long port) + { + int fd = ia64_port_to_fd(port); + unsigned int val; diff --git a/sw_cursor_on_randr.patch b/sw_cursor_on_randr.patch new file mode 100644 index 0000000..1a102da --- /dev/null +++ b/sw_cursor_on_randr.patch @@ -0,0 +1,13 @@ +Index: xorg-server-1.8.0/hw/xfree86/modes/xf86Cursors.c +=================================================================== +--- xorg-server-1.8.0.orig/hw/xfree86/modes/xf86Cursors.c ++++ xorg-server-1.8.0/hw/xfree86/modes/xf86Cursors.c +@@ -611,7 +611,7 @@ xf86_reload_cursors (ScreenPtr screen) + cursor_screen_priv = dixLookupPrivate(&screen->devPrivates, + xf86CursorScreenKey); + /* return if HW cursor is inactive, to avoid displaying two cursors */ +- if (!cursor_screen_priv->isUp) ++ if (!cursor_screen_priv || !cursor_screen_priv->isUp) + return; + + scrn = xf86Screens[screen->myNum]; diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 7e4f36a..ce93124 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Thu Apr 8 12:20:38 UTC 2010 - eich@suse.de + +- On ia64 the Xserver brings its own PIO functions (inb, outb, ...). + These are supposed to overrule the ones provided by glibc. + Unfortunately this doesn't seem to work under all circumstances. + Therefore use inX/outX_ia64 and set appropriate defines. + +------------------------------------------------------------------- +Thu Apr 8 11:50:30 UTC 2010 - eich@suse.de + +- Fix SIG11 on VT switch when using SW cursor with RandR (bnc #592614). + ------------------------------------------------------------------- Thu Apr 8 11:49:46 CEST 2010 - ro@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index b811398..30c9d1e 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -129,6 +129,8 @@ Patch205: xorg-server-1.8.0.diff Patch206: fix_fglrx_screendepth_issue.patch Patch207: xorg-server-option_libxf86config.diff Patch208: xorg-evdev-conf.diff +Patch209: sw_cursor_on_randr.patch +Patch210: pio_ia64.diff %description This package contains the X.Org Server. @@ -255,6 +257,8 @@ popd %patch206 -p0 %patch207 -p0 %patch208 -p0 +%patch209 -p1 +%patch210 -p1 %build pushd xorg-docs-*