38 lines
878 B
C
Executable File
38 lines
878 B
C
Executable File
|
|
#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));
|
|
|
|
#define inportb(port) \
|
|
({ \
|
|
u8_t val; \
|
|
__asm__ __volatile__ ("inb %%dx, %%al" : "=a" (val) : "d" (port)); \
|
|
val; \
|
|
});
|
|
|
|
#define inportw(port) \
|
|
({ \
|
|
u16_t val; \
|
|
__asm__ __volatile__ ("inw %%dx, %%al" : "=a" (val) : "d" (port)); \
|
|
val; \
|
|
});
|
|
|
|
#define inportd(port) \
|
|
({ \
|
|
u32_t val; \
|
|
__asm__ __volatile__ ("inl %%dx, %%al" : "=a" (val) : "d" (port)); \
|
|
val; \
|
|
});
|
|
|
|
#endif
|