compiler.h: don't define inb/outb and friends on mips

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.
This commit is contained in:
Julien Cristau 2021-01-06 10:20:53 +01:00 committed by Adam Jackson
parent f08ab719df
commit 0148a15da1
2 changed files with 5 additions and 6 deletions

View File

@ -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)

View File

@ -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()
{