From d3fcb385455a485f30106ec4ea062ff6de5989aa Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Mon, 12 Sep 2016 09:52:52 +0200 Subject: [PATCH] sel4: fix UART access (patch) See https://github.com/seL4/seL4/issues/36. --- repos/base-sel4/patches/serial.patch | 24 ++++++++++++++++++++++++ repos/base-sel4/ports/sel4.hash | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 repos/base-sel4/patches/serial.patch diff --git a/repos/base-sel4/patches/serial.patch b/repos/base-sel4/patches/serial.patch new file mode 100644 index 000000000..627dc757e --- /dev/null +++ b/repos/base-sel4/patches/serial.patch @@ -0,0 +1,24 @@ +--- src/kernel/sel4/src/plat/pc99/machine/io.c ++++ src/kernel/sel4/src/plat/pc99/machine/io.c +@@ -18,7 +18,7 @@ + + void serial_init(uint16_t port) + { +- while (!(in8(port + 5) & 0x60)); /* wait until not busy */ ++ while (!(in8(port + 5) & 0x20)); /* wait until not busy */ + + out8(port + 1, 0x00); /* disable generating interrupts */ + out8(port + 3, 0x80); /* line control register: command: set divisor */ +@@ -43,10 +43,10 @@ void console_putchar(char c) + lock_acquire(&lock_debug); + + if (port > 0) { +- while (!(in8(port + 5) & 0x60)); ++ while (!(in8(port + 5) & 0x20)); + out8(port, c); + if (c == '\n') { +- while (!(in8(port + 5) & 0x60)); ++ while (!(in8(port + 5) & 0x20)); + out8(port, '\r'); + } + } diff --git a/repos/base-sel4/ports/sel4.hash b/repos/base-sel4/ports/sel4.hash index e45ae0f42..2d137115c 100644 --- a/repos/base-sel4/ports/sel4.hash +++ b/repos/base-sel4/ports/sel4.hash @@ -1 +1 @@ -2b60b5d96865ba4f4d362a80729af31305d13a31 +e8d740ed612452a8d81b992169f459191b3a3f0c