Print this page
6648 illumos build should be explicit about C standards

@@ -1,9 +1,10 @@
+#include <sys/ccompile.h>
+
 #ifndef IO_H
 #define IO_H
 
-
 /* Amount of relocation etherboot is experiencing */
 extern unsigned long virt_offset;
 
 /* Don't require identity mapped physical memory,
  * osloader.c is the only valid user at the moment.

@@ -117,11 +118,12 @@
  * Talk about misusing macros..
  */
 
 #define __OUT1(s,x) \
 extern void __out##s(unsigned x value, unsigned short port); \
-extern inline void __out##s(unsigned x value, unsigned short port) {
+extern __GNU_INLINE \
+void __out##s(unsigned x value, unsigned short port) {
 
 #define __OUT2(s,s1,s2) \
 __asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1"
 
 #define __OUT(s,s1,x) \

@@ -130,11 +132,12 @@
 __OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a" (value), "d" (port)); SLOW_DOWN_IO; } \
 __OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); SLOW_DOWN_IO; }
 
 #define __IN1(s,x) \
 extern unsigned x __in##s(unsigned short port); \
-extern inline unsigned x __in##s(unsigned short port) { unsigned x _v;
+extern __GNU_INLINE \
+unsigned x __in##s(unsigned short port) { unsigned x _v;
 
 #define __IN2(s,s1,s2) \
 __asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0"
 
 #define __IN(s,s1,x,i...) \

@@ -143,17 +146,19 @@
 __IN1(s##_p,x) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); SLOW_DOWN_IO; return _v; } \
 __IN1(s##c_p,x) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); SLOW_DOWN_IO; return _v; }
 
 #define __INS(s) \
 extern void ins##s(unsigned short port, void * addr, unsigned long count); \
-extern inline void ins##s(unsigned short port, void * addr, unsigned long count) \
+extern __GNU_INLINE \
+void ins##s(unsigned short port, void * addr, unsigned long count)      \
 { __asm__ __volatile__ ("cld ; rep ; ins" #s \
 : "=D" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
 
 #define __OUTS(s) \
 extern void outs##s(unsigned short port, const void * addr, unsigned long  count); \
-extern inline void outs##s(unsigned short port, const void * addr, unsigned long count) \
+extern __GNU_INLINE \
+void outs##s(unsigned short port, const void * addr, unsigned long count) \
 { __asm__ __volatile__ ("cld ; rep ; outs" #s \
 : "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
 
 __IN(b,"", char)
 __IN(w,"",short)