38 lines
853 B
C
38 lines
853 B
C
|
|
#ifndef PORTIO_H
|
|
#define PORTIO_H
|
|
|
|
#include "hos_types.h"
|
|
|
|
#define outportb(port, val) \
|
|
__asm__ __volatile__ ("outb %%al, %%dx" : : "a" (val), "d" (port));
|
|
|
|
#define outportw(port, val) \
|
|
__asm__ __volatile__ ("outw %%ax, %%dx" : : "a" (val), "d" (port));
|
|
|
|
#define outportd(port, val) \
|
|
__asm__ __volatile__ ("outl %%eax, %%dx" : : "a" (val), "d" (port));
|
|
|
|
static inline u8_t inportb(u16_t port)
|
|
{
|
|
u8_t val;
|
|
__asm__ __volatile__ ("inb %%dx, %%al" : "=a" (val) : "d" (port));
|
|
return val;
|
|
}
|
|
|
|
static inline u16_t inportw(u16_t port)
|
|
{
|
|
u16_t val;
|
|
__asm__ __volatile__ ("inw %%dx, %%al" : "=a" (val) : "d" (port));
|
|
return val;
|
|
}
|
|
|
|
static inline u32_t inportd(u16_t port)
|
|
{
|
|
u32_t val;
|
|
__asm__ __volatile__ ("inl %%dx, %%al" : "=a" (val) : "d" (port));
|
|
return val;
|
|
}
|
|
|
|
#endif
|