If we don't have a NEWAVIINDEX chunk, but have an OpenDML index,
[mplayer/greg.git] / libdha / sysdep / AsmMacros_x86.h
blobc2ab1dc2179b7387ded6a391522fa0ba39c55aa6
1 /*
2 This file is based on:
3 $XFree86: xc/programs/Xserver/hw/xfree86/drivers/chips/util/AsmMacros.h,v 1.1 2001/11/16 21:13:34 tsi Exp $
4 Modified for readability by Nick Kurshev
5 */
7 #ifndef __ASM_MACROS_X86_H
8 #define __ASM_MACROS_X86_H
10 //#if defined (WINNT)
11 //#error This stuff is not ported on your system
12 //#else
14 #include "config.h"
16 #ifdef CONFIG_DHAHELPER
17 #include <sys/ioctl.h>
18 #include "../kernelhelper/dhahelper.h"
20 extern int dhahelper_fd;
21 extern int dhahelper_initialized;
22 #endif
24 #ifdef CONFIG_SVGAHELPER
25 #include <sys/ioctl.h>
26 #include <svgalib_helper.h>
28 #ifndef SVGALIB_HELPER_IOC_MAGIC
29 /* svgalib 1.9.18+ compatibility ::atmos */
30 #define SVGALIB_HELPER_IOCSOUTB SVGAHELPER_OUTB
31 #define SVGALIB_HELPER_IOCSOUTW SVGAHELPER_OUTW
32 #define SVGALIB_HELPER_IOCSOUTL SVGAHELPER_OUTL
33 #define SVGALIB_HELPER_IOCGINB SVGAHELPER_INB
34 #define SVGALIB_HELPER_IOCGINW SVGAHELPER_INW
35 #define SVGALIB_HELPER_IOCGINL SVGAHELPER_INL
36 #endif
38 extern int svgahelper_fd;
39 extern int svgahelper_initialized;
41 static __inline__ void svga_outb(short port, char value)
43 io_t iov;
45 iov.val = value;
46 iov.port = port;
47 ioctl(svgahelper_fd, SVGALIB_HELPER_IOCSOUTB, &iov);
50 static __inline__ void svga_outw(short port, char value)
52 io_t iov;
54 iov.val = value;
55 iov.port = port;
56 ioctl(svgahelper_fd, SVGALIB_HELPER_IOCSOUTW, &iov);
59 static __inline__ void svga_outl(short port, unsigned int value)
61 io_t iov;
63 iov.val = value;
64 iov.port = port;
65 ioctl(svgahelper_fd, SVGALIB_HELPER_IOCSOUTL, &iov);
68 static __inline__ unsigned int svga_inb(short port)
70 io_t iov;
72 iov.port = port;
73 ioctl(svgahelper_fd, SVGALIB_HELPER_IOCGINB, &iov);
75 return iov.val;
78 static __inline__ unsigned int svga_inw(short port)
80 io_t iov;
82 iov.port = port;
83 ioctl(svgahelper_fd, SVGALIB_HELPER_IOCGINW, &iov);
85 return iov.val;
88 static __inline__ unsigned int svga_inl(short port)
90 io_t iov;
92 iov.port = port;
93 ioctl(svgahelper_fd, SVGALIB_HELPER_IOCGINL, &iov);
95 return iov.val;
97 #endif /* CONIFG_SVGAHELPER */
99 static __inline__ void outb(short port,char val)
101 #ifdef CONFIG_SVGAHELPER
102 if (svgahelper_initialized == 1)
104 svga_outb(port, val);
105 return;
107 #endif
109 #ifdef CONFIG_DHAHELPER
110 if (dhahelper_initialized == 1)
112 dhahelper_port_t _port;
114 _port.operation = PORT_OP_WRITE;
115 _port.addr = port;
116 _port.size = 1;
117 _port.value = val;
118 if (ioctl(dhahelper_fd, DHAHELPER_PORT, &_port) == 0)
119 return;
121 else
122 #endif
123 __asm__ __volatile__("outb %0,%1" : :"a" (val), "d" (port));
124 return;
127 static __inline__ void outw(short port,short val)
129 #ifdef CONFIG_SVGAHELPER
130 if (svgahelper_initialized == 1)
132 svga_outw(port, val);
133 return;
135 #endif
137 #ifdef CONFIG_DHAHELPER
138 if (dhahelper_initialized == 1)
140 dhahelper_port_t _port;
142 _port.operation = PORT_OP_WRITE;
143 _port.addr = port;
144 _port.size = 2;
145 _port.value = val;
146 if (ioctl(dhahelper_fd, DHAHELPER_PORT, &_port) == 0)
147 return;
149 else
150 #endif
151 __asm__ __volatile__("outw %0,%1" : :"a" (val), "d" (port));
152 return;
155 static __inline__ void outl(short port,unsigned int val)
157 #ifdef CONFIG_SVGAHELPER
158 if (svgahelper_initialized == 1)
160 svga_outl(port, val);
161 return;
163 #endif
165 #ifdef CONFIG_DHAHELPER
166 if (dhahelper_initialized == 1)
168 dhahelper_port_t _port;
170 _port.operation = PORT_OP_WRITE;
171 _port.addr = port;
172 _port.size = 4;
173 _port.value = val;
174 if (ioctl(dhahelper_fd, DHAHELPER_PORT, &_port) == 0)
175 return;
177 else
178 #endif
179 __asm__ __volatile__("outl %0,%1" : :"a" (val), "d" (port));
180 return;
183 static __inline__ unsigned int inb(short port)
185 unsigned char ret = 0;
187 #ifdef CONFIG_SVGAHELPER
188 if (svgahelper_initialized == 1)
190 return svga_inb(port);
192 #endif
194 #ifdef CONFIG_DHAHELPER
195 if (dhahelper_initialized == 1)
197 dhahelper_port_t _port;
199 _port.operation = PORT_OP_READ;
200 _port.addr = port;
201 _port.size = 1;
202 if (ioctl(dhahelper_fd, DHAHELPER_PORT, &_port) == 0)
203 return _port.value;
205 else
206 #endif
207 __asm__ __volatile__("inb %1,%0" :
208 "=a" (ret) :
209 "d" (port));
210 return ret;
213 static __inline__ unsigned int inw(short port)
215 unsigned short ret = 0;
217 #ifdef CONFIG_SVGAHELPER
218 if (svgahelper_initialized == 1)
220 return svga_inw(port);
222 #endif
224 #ifdef CONFIG_DHAHELPER
225 if (dhahelper_initialized == 1)
227 dhahelper_port_t _port;
229 _port.operation = PORT_OP_READ;
230 _port.addr = port;
231 _port.size = 2;
232 if (ioctl(dhahelper_fd, DHAHELPER_PORT, &_port) == 0)
233 return _port.value;
235 else
236 #endif
237 __asm__ __volatile__("inw %1,%0" :
238 "=a" (ret) :
239 "d" (port));
240 return ret;
243 static __inline__ unsigned int inl(short port)
245 unsigned int ret = 0;
247 #ifdef CONFIG_SVGAHELPER
248 if (svgahelper_initialized == 1)
250 return svga_inl(port);
252 #endif
254 #ifdef CONFIG_DHAHELPER
255 if (dhahelper_initialized == 1)
257 dhahelper_port_t _port;
259 _port.operation = PORT_OP_READ;
260 _port.addr = port;
261 _port.size = 4;
262 if (ioctl(dhahelper_fd, DHAHELPER_PORT, &_port) == 0)
263 return _port.value;
265 else
266 #endif
267 __asm__ __volatile__("inl %1,%0" :
268 "=a" (ret) :
269 "d" (port));
270 return ret;
273 static __inline__ void intr_disable()
275 #ifdef CONFIG_SVGAHELPER
276 if (svgahelper_initialized == 1)
277 return;
278 #endif
279 __asm__ __volatile__("cli");
282 static __inline__ void intr_enable()
284 #ifdef CONFIG_SVGAHELPER
285 if (svgahelper_initialized == 1)
286 return;
287 #endif
288 __asm__ __volatile__("sti");
291 #endif
293 //#endif