forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
x11-base/xorg-server: Apply patch to fix module loading on alpha
Closes: https://bugs.gentoo.org/548906
- Loading branch information
Showing
2 changed files
with
226 additions
and
0 deletions.
There are no files selected for viewing
224 changes: 224 additions & 0 deletions
224
...erver/files/xorg-server-1.20.0-xfree86-Inline-xf86-Read-Write-Mmio-8-16-32-on-alpha.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,224 @@ | ||
From eecedfffd40f0465d85347f14547ddc6b30e57df Mon Sep 17 00:00:00 2001 | ||
From: Matt Turner <[email protected]> | ||
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 <[email protected]> | ||
Reviewed-by: Adam Jackson <[email protected]> | ||
Signed-off-by: Matt Turner <[email protected]> | ||
--- | ||
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters