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