|
|
1.1 root 1: /*
2: * Mach Operating System
3: * Copyright (c) 1990 Carnegie-Mellon University
4: * All rights reserved. The CMU software License Agreement specifies
5: * the terms and conditions for use and redistribution.
6: */
7: /*
8: * HISTORY
9: * $Log: pio.h,v $
10: * Revision 1.1 1993/03/21 18:09:48 cgd
11: * after 0.2.2 "stable" patches applied
12: *
13: * Revision 1.1 1992/05/27 00:48:30 balsup
14: * machkern/cor merge
15: *
16: * Revision 1.1 1991/10/10 20:11:39 balsup
17: * Initial revision
18: *
19: * Revision 2.2 91/04/02 11:52:29 mbj
20: * [90/08/14 mg32]
21: *
22: * Now we know how types are factor in.
23: * Cleaned up a bunch: eliminated ({ for output and flushed unused
24: * output variables.
25: * [90/08/14 rvb]
26: *
27: * This is how its done in gcc:
28: * Created.
29: * [90/03/26 rvb]
30: *
31: */
32:
33:
34: #define inl(y) \
35: ({ unsigned long _tmp__; \
36: asm volatile("inl %1, %0" : "=a" (_tmp__) : "d" ((unsigned short)(y))); \
37: _tmp__; })
38:
39: #define inw(y) \
40: ({ unsigned short _tmp__; \
41: asm volatile(".byte 0x66; inl %1, %0" : "=a" (_tmp__) : "d" ((unsigned short)(y))); \
42: _tmp__; })
43:
44: #define inb(y) \
45: ({ unsigned char _tmp__; \
46: asm volatile("inb %1, %0" : "=a" (_tmp__) : "d" ((unsigned short)(y))); \
47: _tmp__; })
48:
49:
50: #define outl(x, y) \
51: { asm volatile("outl %0, %1" : : "a" (y) , "d" ((unsigned short)(x))); }
52:
53:
54: #define outw(x, y) \
55: {asm volatile(".byte 0x66; outl %0, %1" : : "a" ((unsigned short)(y)) , "d" ((unsigned short)(x))); }
56:
57:
58: #define outb(x, y) \
59: { asm volatile("outb %0, %1" : : "a" ((unsigned char)(y)) , "d" ((unsigned short)(x))); }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.