3 #include "io_regblock.h"
7 class Io_register_block_port : public Io_register_block
10 Io_register_block_port(unsigned long base)
14 unsigned char read8(unsigned long reg) const
17 asm volatile("inb %w1, %b0" : "=a" (val) : "Nd" (_base + reg));
21 unsigned short read16(unsigned long reg) const
24 asm volatile("inw %w1, %w0" : "=a" (val) : "Nd" (_base + reg));
28 unsigned int read32(unsigned long reg) const
31 asm volatile("in %w1, %0" : "=a" (val) : "Nd" (_base + reg));
35 void write8(unsigned long reg, unsigned char val) const
36 { asm volatile("outb %b0, %w1" : : "a" (val), "Nd" (_base + reg)); }
38 void write16(unsigned long reg, unsigned short val) const
39 { asm volatile("outw %w0, %w1" : : "a" (val), "Nd" (_base + reg)); }
41 void write32(unsigned long reg, unsigned int val) const
42 { asm volatile("out %0, %w1" : : "a" (val), "Nd" (_base + reg)); }
45 { asm volatile ("outb %al,$0x80"); }