1 #ifndef SYS_KERN_MACHINE_H
2 # define SYS_KERN_MACHINE_H 1
7 mmio_write8(uintptr_t addr, uint8_t value)
10 __asm__
volatile (
"outb %0, %1" : :
"a"(value),
"Nd"((uint16_t)addr) );
12 *(
volatile uint8_t *)(addr) = value;
16 static __inline__ uint8_t
17 mmio_read8(uintptr_t addr)
22 __asm__
volatile (
"inb %1, %0"
24 :
"Nd"((uint16_t)addr) );
27 return (*(
volatile uint8_t *)addr);
31 static __inline__
void
32 mmio_write16(uintptr_t addr, uint16_t value)
34 *(
volatile uint16_t *)(addr) = value;
37 static __inline__ uint16_t
38 mmio_read16(uintptr_t addr)
40 return (*(
volatile uint16_t *)addr);
43 static __inline__
void
44 mmio_write32(uintptr_t addr, uint32_t value)
46 *(
volatile uint32_t *)(addr) = value;
49 static __inline__ uint32_t
50 mmio_read32(uintptr_t addr)
52 return (*(
volatile uint32_t *)addr);
55 # if __has_include_next(<sys/machine/mmio.h>)
56 # include_next <sys/machine/mmio.h>