]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/pio.h
xnu-792.21.3.tar.gz
[apple/xnu.git] / osfmk / i386 / pio.h
index a5de5df74b497a8e7aeb78d1383f40dbb165652d..bd2f2f6b9e9493d79dd9673a87bc5d07b1b29bd5 100644 (file)
@@ -59,9 +59,6 @@
 #define I386_PIO_H
 #include <mach_assert.h>
 
-#if !MACH_ASSERT
-#include <architecture/i386/pio.h>
-#else
 typedef unsigned short i386_ioport_t;
 
 /* read a longword */
@@ -118,6 +115,51 @@ extern void                loutb(
                                i386_ioport_t   port,
                                char            * data,
                                int             count);
-#endif /* !MACH_ASSERT */
 
+#if defined(__GNUC__) && (!MACH_ASSERT)
+extern __inline__ unsigned long        inl(
+                               i386_ioport_t port)
+{
+       unsigned long datum;
+       __asm__ volatile("inl %1, %0" : "=a" (datum) : "d" (port));
+       return(datum);
+}
+
+extern __inline__ unsigned short inw(
+                               i386_ioport_t port)
+{
+       unsigned short datum;
+       __asm__ volatile(".byte 0x66; inl %1, %0" : "=a" (datum) : "d" (port));
+       return(datum);
+}
+
+extern __inline__ unsigned char inb(
+                               i386_ioport_t port)
+{
+       unsigned char datum;
+       __asm__ volatile("inb %1, %0" : "=a" (datum) : "d" (port));
+       return(datum);
+}
+
+extern __inline__ void outl(
+                               i386_ioport_t port,
+                               unsigned long datum)
+{
+       __asm__ volatile("outl %0, %1" : : "a" (datum), "d" (port));
+}
+
+extern __inline__ void outw(
+                               i386_ioport_t port,
+                               unsigned short datum)
+{
+       __asm__ volatile(".byte 0x66; outl %0, %1" : : "a" (datum), "d" (port));
+}
+
+extern __inline__ void outb(
+                               i386_ioport_t port,
+                               unsigned char datum)
+{
+       __asm__ volatile("outb %0, %1" : : "a" (datum), "d" (port));
+}
+#endif /* defined(__GNUC__) && (!MACH_ASSERT) */
 #endif /* I386_PIO_H */