On 18/01/19 13:01, Stefano Garzarella wrote: > +static inline uint8_t inb(uint16_t port) > +{ > + uint8_t value; > + > + asm volatile("outl %w1, %0" : : "a"(value), "Nd"(port)); > + return value; > +} > + > +static inline uint16_t inw(uint16_t port) > +{ > + uint16_t value; > + > + asm volatile("outl %w1, %0" : : "a"(value), "Nd"(port)); > + return value; > +} > + > +static inline uint32_t inl(uint16_t port) > +{ > + uint32_t value; > + > + asm volatile("outl %w1, %0" : : "a"(value), "Nd"(port)); > + return value; > +} >
Almost: diff --git a/pc-bios/optionrom/optrom.h b/pc-bios/optionrom/optrom.h index c5c8caa..1e5e265 100644 --- a/pc-bios/optionrom/optrom.h +++ b/pc-bios/optionrom/optrom.h @@ -54,7 +54,7 @@ static inline uint8_t inb(uint16_t port) { uint8_t value; - asm volatile("outl %w1, %0" : : "a"(value), "Nd"(port)); + asm volatile("inb %w1, %0" : "=a"(value) : "Nd"(port)); return value; } @@ -62,7 +62,7 @@ static inline uint16_t inw(uint16_t port) { uint16_t value; - asm volatile("outl %w1, %0" : : "a"(value), "Nd"(port)); + asm volatile("inw %w1, %0" : "=a"(value) : "Nd"(port)); return value; } @@ -70,7 +70,7 @@ static inline uint32_t inl(uint16_t port) { uint32_t value; - asm volatile("outl %w1, %0" : : "a"(value), "Nd"(port)); + asm volatile("inl %w1, %0" : "=a"(value) : "Nd"(port)); return value; } No need to repost. Paolo