|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*
26: * Copyright (c) 1992 NeXT Computer, Inc.
27: *
28: * Inlines for io space access.
29: *
30: * HISTORY
31: *
32: * 20 May 1992 ? at NeXT
33: * Created.
34: */
35:
36: #import <machine/types.h>
37:
38: #ifndef eieio
39: #define eieio() \
40: __asm__ volatile("eieio")
41: #endif
42:
43: typedef u_int32_t io_addr_t;
44:
45: #if !defined(DEFINE_INLINE_FUNCTIONS)
46: static
47: #endif
48: inline
49: unsigned char
50: inb(
51: io_addr_t port
52: )
53: {
54: unsigned char data;
55: data = *(volatile u_int8_t *)port;
56: return (data);
57: }
58:
59: #if !defined(DEFINE_INLINE_FUNCTIONS)
60: static
61: #endif
62: inline
63: unsigned short
64: inw(
65: io_addr_t port
66: )
67: {
68: unsigned short data;
69:
70: data = *(volatile u_int16_t *)port;
71: return (data);
72: }
73:
74: #if !defined(DEFINE_INLINE_FUNCTIONS)
75: static
76: #endif
77: inline
78: unsigned short
79: inl(
80: io_addr_t port
81: )
82: {
83: unsigned long data;
84:
85: data = *(volatile u_int32_t *)port;
86: return (data);
87: }
88:
89: #if !defined(DEFINE_INLINE_FUNCTIONS)
90: static
91: #endif
92: inline
93: void
94: outb(
95: io_addr_t port,
96: unsigned char data
97: )
98: {
99: *(volatile u_int8_t *)port = data;
100: eieio();
101: }
102:
103: #if !defined(DEFINE_INLINE_FUNCTIONS)
104: static
105: #endif
106: inline
107: void
108: outw(
109: io_addr_t port,
110: unsigned short data
111: )
112: {
113: *(volatile u_int16_t *)port = data;
114: eieio();
115: }
116:
117: #if !defined(DEFINE_INLINE_FUNCTIONS)
118: static
119: #endif
120: inline
121: void
122: outl(
123: io_addr_t port,
124: unsigned long data
125: )
126: {
127: *(volatile u_int32_t *)port = data;
128: eieio();
129: }
130:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.