aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-base/xorg-server/files/xorg-server-1.20.0-xfree86-Inline-xf86-Read-Write-Mmio-8-16-32-on-alpha.patch')
-rw-r--r--x11-base/xorg-server/files/xorg-server-1.20.0-xfree86-Inline-xf86-Read-Write-Mmio-8-16-32-on-alpha.patch224
1 files changed, 224 insertions, 0 deletions
diff --git a/x11-base/xorg-server/files/xorg-server-1.20.0-xfree86-Inline-xf86-Read-Write-Mmio-8-16-32-on-alpha.patch b/x11-base/xorg-server/files/xorg-server-1.20.0-xfree86-Inline-xf86-Read-Write-Mmio-8-16-32-on-alpha.patch
new file mode 100644
index 00000000..ebf677ae
--- /dev/null
+++ b/x11-base/xorg-server/files/xorg-server-1.20.0-xfree86-Inline-xf86-Read-Write-Mmio-8-16-32-on-alpha.patch
@@ -0,0 +1,224 @@
+From eecedfffd40f0465d85347f14547ddc6b30e57df Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Tue, 22 May 2018 21:10:55 -0700
+Subject: [PATCH xserver] xfree86: Inline xf86{Read,Write}Mmio{8,16,32} on
+ alpha
+
+In commit 9db2af6f757e (xfree86: Remove xf86{Map,Unmap}VidMem) we
+somehow stopped exporting xf86{Read,Write}Mmio{8,16,32}. Since the
+function pointer indirection was intended to support dense vs sparse and
+sparse support is now gone, we can just make the functions static inline
+in compiler.h and avoid all of this.
+
+Bugzilla: https://bugs.gentoo.org/548906
+Tested-by: Christopher May-Townsend <chris@maytownsend.co.uk>
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Matt Turner <mattst88@gmail.com>
+---
+ configure.ac | 4 --
+ hw/xfree86/common/compiler.h | 67 ++++++++++++++++++++++++---------
+ hw/xfree86/os-support/bsd/Makefile.am | 3 +-
+ hw/xfree86/os-support/linux/Makefile.am | 12 ------
+ hw/xfree86/os-support/linux/lnx_video.c | 27 -------------
+ hw/xfree86/os-support/meson.build | 1 -
+ 6 files changed, 50 insertions(+), 64 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index ddc47faa2..0075b6ace 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1908,9 +1908,6 @@ if test "x$XORG" = xyes; then
+ XORG_OS_SUBDIR="linux"
+ linux_acpi="no"
+ case $host_cpu in
+- alpha*)
+- linux_alpha=yes
+- ;;
+ i*86|amd64*|x86_64*|ia64*)
+ linux_acpi=$enable_linux_acpi
+ ;;
+@@ -2075,7 +2072,6 @@ AM_CONDITIONAL([XORG], [test "x$XORG" = xyes])
+ AM_CONDITIONAL([XORG_BUS_PCI], [test "x$PCI" = xyes])
+ AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
+-AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
+ AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
+ AM_CONDITIONAL([LNXAPM], [test "x$linux_apm" = xyes])
+ AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
+diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
+index eea29dfb5..7144c6a27 100644
+--- a/hw/xfree86/common/compiler.h
++++ b/hw/xfree86/common/compiler.h
+@@ -986,33 +986,64 @@ inl(unsigned PORT_SIZE port)
+ #endif
+
+ #ifdef __alpha__
+-/* entry points for Mmio memory access routines */
+-extern _X_EXPORT int (*xf86ReadMmio8) (void *, unsigned long);
+-extern _X_EXPORT int (*xf86ReadMmio16) (void *, unsigned long);
+-extern _X_EXPORT int (*xf86ReadMmio32) (void *, unsigned long);
+-extern _X_EXPORT void (*xf86WriteMmio8) (int, void *, unsigned long);
+-extern _X_EXPORT void (*xf86WriteMmio16) (int, void *, unsigned long);
+-extern _X_EXPORT void (*xf86WriteMmio32) (int, void *, unsigned long);
++static inline int
++xf86ReadMmio8(void *Base, unsigned long Offset)
++{
++ mem_barrier();
++ return *(CARD8 *) ((unsigned long) Base + (Offset));
++}
++
++static inline int
++xf86ReadMmio16(void *Base, unsigned long Offset)
++{
++ mem_barrier();
++ return *(CARD16 *) ((unsigned long) Base + (Offset));
++}
++
++static inline int
++xf86ReadMmio32(void *Base, unsigned long Offset)
++{
++ mem_barrier();
++ return *(CARD32 *) ((unsigned long) Base + (Offset));
++}
++
++static inline void
++xf86WriteMmio8(int Value, void *Base, unsigned long Offset)
++{
++ write_mem_barrier();
++ *(CARD8 *) ((unsigned long) Base + (Offset)) = Value;
++}
++
++static inline void
++xf86WriteMmio16(int Value, void *Base, unsigned long Offset)
++{
++ write_mem_barrier();
++ *(CARD16 *) ((unsigned long) Base + (Offset)) = Value;
++}
++
++static inline void
++xf86WriteMmio32(int Value, void *Base, unsigned long Offset)
++{
++ write_mem_barrier();
++ *(CARD32 *) ((unsigned long) Base + (Offset)) = Value;
++}
++
+ extern _X_EXPORT void xf86SlowBCopyFromBus(unsigned char *, unsigned char *,
+ int);
+ extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int);
+
+ /* Some macros to hide the system dependencies for MMIO accesses */
+ /* Changed to kill noise generated by gcc's -Wcast-align */
+-#define MMIO_IN8(base, offset) (*xf86ReadMmio8)(base, offset)
+-#define MMIO_IN16(base, offset) (*xf86ReadMmio16)(base, offset)
+-#define MMIO_IN32(base, offset) (*xf86ReadMmio32)(base, offset)
+-
+-#define MMIO_OUT32(base, offset, val) \
+- do { \
+- write_mem_barrier(); \
+- *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val); \
+- } while (0)
++#define MMIO_IN8(base, offset) xf86ReadMmio8(base, offset)
++#define MMIO_IN16(base, offset) xf86ReadMmio16(base, offset)
++#define MMIO_IN32(base, offset) xf86ReadMmio32(base, offset)
+
+ #define MMIO_OUT8(base, offset, val) \
+- (*xf86WriteMmio8)((CARD8)(val), base, offset)
++ xf86WriteMmio8((CARD8)(val), base, offset)
+ #define MMIO_OUT16(base, offset, val) \
+- (*xf86WriteMmio16)((CARD16)(val), base, offset)
++ xf86WriteMmio16((CARD16)(val), base, offset)
++#define MMIO_OUT32(base, offset, val) \
++ xf86WriteMmio32((CARD32)(val), base, offset)
+
+ #elif defined(__powerpc__) || defined(__sparc__)
+ /*
+diff --git a/hw/xfree86/os-support/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am
+index b01ea5bca..66ac83805 100644
+--- a/hw/xfree86/os-support/bsd/Makefile.am
++++ b/hw/xfree86/os-support/bsd/Makefile.am
+@@ -26,8 +26,7 @@ endif
+ if ALPHA_VIDEO
+ # Cheat here and piggyback other alpha bits on ALPHA_VIDEO.
+ ARCH_SOURCES = \
+- alpha_video.c \
+- bsd_ev56.c
++ alpha_video.c
+ endif
+
+ if ARM_VIDEO
+diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
+index 26e40bb93..9b4535b53 100644
+--- a/hw/xfree86/os-support/linux/Makefile.am
++++ b/hw/xfree86/os-support/linux/Makefile.am
+@@ -1,13 +1,5 @@
+ noinst_LTLIBRARIES = liblinux.la
+
+-if LINUX_ALPHA
+-noinst_LTLIBRARIES += liblinuxev56.la
+-
+-liblinuxev56_la_CFLAGS = $(AM_CFLAGS) -mcpu=ev56
+-
+-liblinuxev56_la_SOURCES = lnx_ev56.c
+-endif
+-
+ if LNXACPI
+ ACPI_SRCS = lnx_acpi.c
+ if !LNXAPM
+@@ -39,7 +31,3 @@ liblinux_la_SOURCES = linux.h lnx_init.c lnx_video.c \
+ AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(DIX_CFLAGS) $(XORG_CFLAGS) $(PLATFORM_DEFINES)
+
+ AM_CPPFLAGS = $(XORG_INCS) $(PLATFORM_INCLUDES) $(LIBDRM_CFLAGS)
+-
+-if LINUX_ALPHA
+-liblinux_la_LIBADD = liblinuxev56.la
+-endif
+diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c
+index c09d71947..04e45092a 100644
+--- a/hw/xfree86/os-support/linux/lnx_video.c
++++ b/hw/xfree86/os-support/linux/lnx_video.c
+@@ -166,30 +166,3 @@ xf86DisableIO(void)
+
+ ExtendedEnabled = FALSE;
+ }
+-
+-#if defined (__alpha__)
+-
+-extern int readDense8(void *Base, register unsigned long Offset);
+-extern int readDense16(void *Base, register unsigned long Offset);
+-extern int readDense32(void *Base, register unsigned long Offset);
+-extern void
+- writeDense8(int Value, void *Base, register unsigned long Offset);
+-extern void
+- writeDense16(int Value, void *Base, register unsigned long Offset);
+-extern void
+- writeDense32(int Value, void *Base, register unsigned long Offset);
+-
+-void (*xf86WriteMmio8) (int Value, void *Base, unsigned long Offset)
+- = writeDense8;
+-void (*xf86WriteMmio16) (int Value, void *Base, unsigned long Offset)
+- = writeDense16;
+-void (*xf86WriteMmio32) (int Value, void *Base, unsigned long Offset)
+- = writeDense32;
+-int (*xf86ReadMmio8) (void *Base, unsigned long Offset)
+- = readDense8;
+-int (*xf86ReadMmio16) (void *Base, unsigned long Offset)
+- = readDense16;
+-int (*xf86ReadMmio32) (void *Base, unsigned long Offset)
+- = readDense32;
+-
+-#endif /* __alpha__ */
+diff --git a/hw/xfree86/os-support/meson.build b/hw/xfree86/os-support/meson.build
+index 901422786..b6e5c975d 100644
+--- a/hw/xfree86/os-support/meson.build
++++ b/hw/xfree86/os-support/meson.build
+@@ -100,7 +100,6 @@ elif host_machine.system().endswith('bsd')
+ srcs_xorg_os_support += 'shared/ioperm_noop.c'
+ elif host_machine.cpu_family() == 'alpha'
+ srcs_xorg_os_support += 'bsd/alpha_video.c'
+- srcs_xorg_os_support += 'bsd/bsd_ev56.c'
+ endif
+
+ if host_machine.system() == 'freebsd'
+--
+2.16.1
+