--- hw/xfree86/common/compiler.h.orig 2015-06-05 17:19:40.000000000 +0200 +++ hw/xfree86/common/compiler.h 2015-10-12 15:41:30.817470000 +0200 @@ -968,6 +968,59 @@ inl(unsigned PORT_SIZE port) #endif /* NDS32_MMIO_SWAP */ #elif defined(__i386__) || defined(__ia64__) +#if defined(__clang__) + +/* + * If gcc uses gas rather than the native assembler, the syntax of these + * inlines has to be different. DHD + */ + +static __inline__ void +outb(unsigned short port, unsigned char val) +{ + __asm__ __volatile__("outb %0,%1"::"a"(val), "d"(port)); +} + +static __inline__ void +outw(unsigned short port, unsigned short val) +{ + __asm__ __volatile__("outw %0,%1"::"a"(val), "d"(port)); +} + +static __inline__ void +outl(unsigned short port, unsigned int val) +{ + __asm__ __volatile__("outl %0,%1"::"a"(val), "d"(port)); +} + +static __inline__ unsigned int +inb(unsigned short port) +{ + unsigned char ret; + __asm__ __volatile__("inb %1,%0":"=a"(ret):"d"(port)); + + return ret; +} + +static __inline__ unsigned int +inw(unsigned short port) +{ + unsigned short ret; + __asm__ __volatile__("inw %1,%0":"=a"(ret):"d"(port)); + + return ret; +} + +static __inline__ unsigned int +inl(unsigned short port) +{ + unsigned int ret; + __asm__ __volatile__("inl %1,%0":"=a"(ret):"d"(port)); + + return ret; +} + +#else /* !__clang__, presumable GAS */ static __inline__ void outb(unsigned short port, unsigned char val) @@ -1014,6 +1067,7 @@ inl(unsigned short port) return ret; } +#endif /* !__clang__, GAS part */ #endif /* arch madness */ #else /* !GNUC */