From de5e24b5036a1a5a877f8f30169e3497d0e296d6 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Wed, 6 Jan 2021 10:20:53 +0100 Subject: [PATCH] compiler.h: don't define inb/outb and friends on mips MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The definition relies on IOPortBase, which is only ever set in hw/xfree86/os-support/bsd/arm_video.c This caused build failures on linux/mips with GCC 10, due to this change (from https://gcc.gnu.org/gcc-10/changes.html#c): "GCC now defaults to -fno-common. As a result, global variable accesses are more efficient on various targets. In C, global variables with multiple tentative definitions now result in linker errors. With -fcommon such definitions are silently merged during linking." As a result anything including compiler.h would get its own definition of IOPortBase and the linker would error out. Signed-off-by: Raphaël Mélotte --- hw/xfree86/common/compiler.h | 8 ++------ hw/xfree86/os-support/bsd/arm_video.c | 3 +++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h index 2b2008b3f..eb788d3fd 100644 --- a/hw/xfree86/common/compiler.h +++ b/hw/xfree86/common/compiler.h @@ -518,14 +518,10 @@ xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset, barrier(); } -#elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__)) -#if defined(__arm32__) || defined(__mips64) +#elif defined(__arm32__) && !defined(__linux__) #define PORT_SIZE long -#else -#define PORT_SIZE short -#endif -_X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */ +extern _X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */ static __inline__ void outb(unsigned PORT_SIZE port, unsigned char val) diff --git a/hw/xfree86/os-support/bsd/arm_video.c b/hw/xfree86/os-support/bsd/arm_video.c index dd1020e33..180d70543 100644 --- a/hw/xfree86/os-support/bsd/arm_video.c +++ b/hw/xfree86/os-support/bsd/arm_video.c @@ -65,6 +65,7 @@ #include "xf86Priv.h" #include "xf86_OSlib.h" #include "xf86OSpriv.h" +#include "compiler.h" #if defined(__NetBSD__) && !defined(MAP_FILE) #define MAP_FLAGS MAP_SHARED @@ -162,6 +163,8 @@ xf86DisableIO() #if defined(USE_ARC_MMAP) || defined(__arm32__) +unsigned int IOPortBase; + Bool xf86EnableIO() { -- 2.32.0