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

Reply via email to