blob: bbfb2e6bf85563d40e2dc9f483d2d57fcf2be910 [file] [log] [blame]
static __inline void outb(unsigned char __val, unsigned short __port) {
__asm__ volatile("outb %0,%1"
:
: "a"(__val), "dN"(__port));
}
static __inline void outw(unsigned short __val, unsigned short __port) {
__asm__ volatile("outw %0,%1"
:
: "a"(__val), "dN"(__port));
}
static __inline void outl(unsigned int __val, unsigned short __port) {
__asm__ volatile("outl %0,%1"
:
: "a"(__val), "dN"(__port));
}
static __inline unsigned char inb(unsigned short __port) {
unsigned char __val;
__asm__ volatile("inb %1,%0"
: "=a"(__val)
: "dN"(__port));
return __val;
}
static __inline unsigned short inw(unsigned short __port) {
unsigned short __val;
__asm__ volatile("inw %1,%0"
: "=a"(__val)
: "dN"(__port));
return __val;
}
static __inline unsigned int inl(unsigned short __port) {
unsigned int __val;
__asm__ volatile("inl %1,%0"
: "=a"(__val)
: "dN"(__port));
return __val;
}
static __inline void outsb(unsigned short __port, const void* __buf, unsigned long __n) {
__asm__ volatile("cld; rep; outsb"
: "+S"(__buf), "+c"(__n)
: "d"(__port));
}
static __inline void outsw(unsigned short __port, const void* __buf, unsigned long __n) {
__asm__ volatile("cld; rep; outsw"
: "+S"(__buf), "+c"(__n)
: "d"(__port));
}
static __inline void outsl(unsigned short __port, const void* __buf, unsigned long __n) {
__asm__ volatile("cld; rep; outsl"
: "+S"(__buf), "+c"(__n)
: "d"(__port));
}
static __inline void insb(unsigned short __port, void* __buf, unsigned long __n) {
__asm__ volatile("cld; rep; insb"
: "+D"(__buf), "+c"(__n)
: "d"(__port));
}
static __inline void insw(unsigned short __port, void* __buf, unsigned long __n) {
__asm__ volatile("cld; rep; insw"
: "+D"(__buf), "+c"(__n)
: "d"(__port));
}
static __inline void insl(unsigned short __port, void* __buf, unsigned long __n) {
__asm__ volatile("cld; rep; insl"
: "+D"(__buf), "+c"(__n)
: "d"(__port));
}