diff --git a/repos/base/include/drivers/uart/x86_pc.h b/repos/base/include/drivers/uart/x86_pc.h index 3f509144ce..67e9cfa8fe 100644 --- a/repos/base/include/drivers/uart/x86_pc.h +++ b/repos/base/include/drivers/uart/x86_pc.h @@ -17,6 +17,7 @@ /* Genode includes */ #include +#include namespace Genode { class X86_uart; } @@ -87,7 +88,7 @@ class Genode::X86_uart DLHI = (uint16_t)(_port + 1); _outb(LCR, 0x80); /* select bank 1 */ - for (volatile int i = 10000000; i--; ); + for (int i = 10000000; i; --i) memory_barrier(); _outb(DLLO, (uint8_t)((115200/_baud_rate) >> 0)); _outb(DLHI, (uint8_t)((115200/_baud_rate) >> 8)); _outb(LCR, 0x03); /* set 8,N,1 */ diff --git a/repos/os/src/drivers/uart/spec/x86/uart_driver.h b/repos/os/src/drivers/uart/spec/x86/uart_driver.h index d62fc2315c..fc6638f0f1 100644 --- a/repos/os/src/drivers/uart/spec/x86/uart_driver.h +++ b/repos/os/src/drivers/uart/spec/x86/uart_driver.h @@ -18,6 +18,7 @@ /* Genode includes */ #include #include +#include enum { UARTS_NUM = 4 }; /* needed by base class definitions */ @@ -87,7 +88,7 @@ class Uart::Driver : public Uart::Driver_base void _init_comport(size_t baud) { _outb(0x80u); /* select bank 1 */ - for (volatile int i = 10000000; i--; ); + for (int i = 10000000; i; i--) memory_barrier(); _outb(((115200/baud) >> 0) && 0xff); _outb(((115200/baud) >> 8) && 0xff); _outb(0x03u); /* set 8,N,1 */