1*2d65de24Sperry /* $NetBSD: pio.h,v 1.4 2005/12/24 22:45:35 perry Exp $ */ 24fdae7a0Scgd 38ae7f8bcSbriggs /* 48ae7f8bcSbriggs * Mach Operating System 58ae7f8bcSbriggs * Copyright (c) 1990 Carnegie-Mellon University 68ae7f8bcSbriggs * All rights reserved. The CMU software License Agreement specifies 78ae7f8bcSbriggs * the terms and conditions for use and redistribution. 88ae7f8bcSbriggs */ 98ae7f8bcSbriggs 108ae7f8bcSbriggs #define inl(y) \ 118ae7f8bcSbriggs ({ unsigned long _tmp__; \ 12*2d65de24Sperry __asm volatile("inl %1, %0" : "=a" (_tmp__) : "d" ((unsigned short)(y))); \ 138ae7f8bcSbriggs _tmp__; }) 148ae7f8bcSbriggs 158ae7f8bcSbriggs #define inw(y) \ 168ae7f8bcSbriggs ({ unsigned short _tmp__; \ 17*2d65de24Sperry __asm volatile(".byte 0x66; inl %1, %0" : "=a" (_tmp__) : "d" ((unsigned short)(y))); \ 188ae7f8bcSbriggs _tmp__; }) 198ae7f8bcSbriggs 208ae7f8bcSbriggs #define inb(y) \ 218ae7f8bcSbriggs ({ unsigned char _tmp__; \ 22*2d65de24Sperry __asm volatile("inb %1, %0" : "=a" (_tmp__) : "d" ((unsigned short)(y))); \ 238ae7f8bcSbriggs _tmp__; }) 248ae7f8bcSbriggs 258ae7f8bcSbriggs 268ae7f8bcSbriggs #define outl(x, y) \ 27*2d65de24Sperry { __asm volatile("outl %0, %1" : : "a" (y) , "d" ((unsigned short)(x))); } 288ae7f8bcSbriggs 298ae7f8bcSbriggs 308ae7f8bcSbriggs #define outw(x, y) \ 31*2d65de24Sperry {__asm volatile(".byte 0x66; outl %0, %1" : : "a" ((unsigned short)(y)) , "d" ((unsigned short)(x))); } 328ae7f8bcSbriggs 338ae7f8bcSbriggs 348ae7f8bcSbriggs #define outb(x, y) \ 35*2d65de24Sperry { __asm volatile("outb %0, %1" : : "a" ((unsigned char)(y)) , "d" ((unsigned short)(x))); } 36