|
Packit |
d36e9b |
/* Redefine inb and outb_p for 95 and OBSD because they don't have sys/io.h */
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
#ifndef _IO_H
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
#define _IO_H
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
#ifndef _MSC_VER
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
static __inline unsigned char
|
|
Packit |
d36e9b |
inb (unsigned short int port)
|
|
Packit |
d36e9b |
{
|
|
Packit |
d36e9b |
unsigned char _v;
|
|
Packit |
d36e9b |
__asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (port));
|
|
Packit |
d36e9b |
return _v;
|
|
Packit |
d36e9b |
}
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
static __inline void
|
|
Packit |
d36e9b |
outb_p (unsigned char value, unsigned short int port)
|
|
Packit |
d36e9b |
{
|
|
Packit |
d36e9b |
__asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (value),
|
|
Packit |
d36e9b |
"Nd" (port));
|
|
Packit |
d36e9b |
}
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
#else
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
#include <conio.h>
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
static __inline unsigned char
|
|
Packit |
d36e9b |
inb (unsigned short int port)
|
|
Packit |
d36e9b |
{
|
|
Packit |
d36e9b |
return inp (port);
|
|
Packit |
d36e9b |
}
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
static __inline void
|
|
Packit |
d36e9b |
outb_p (unsigned char value, unsigned short int port)
|
|
Packit |
d36e9b |
{
|
|
Packit |
d36e9b |
outp (port, value);
|
|
Packit |
d36e9b |
}
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
#endif /* _MSC_VER */
|
|
Packit |
d36e9b |
|
|
Packit |
d36e9b |
#endif /* _IO_H */
|