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