On Mon, Jan 21, 2019 at 04:43:24PM +0100, Paolo Bonzini wrote: > 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.
Oooh, many thanks to catch! > > Paolo -- Stefano Garzarella Red Hat