diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/arm/pl011/pl011_console.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/arm/pl011/pl011_console.c b/drivers/arm/pl011/pl011_console.c index 3b0e237..06e357f 100644 --- a/drivers/arm/pl011/pl011_console.c +++ b/drivers/arm/pl011/pl011_console.c @@ -66,15 +66,18 @@ void console_init(unsigned long base_addr) } +#define WAIT_UNTIL_UART_FREE(base) while ((pl011_read_fr(base)\ + & PL011_UARTFR_TXFF) == 1) int console_putc(int c) { assert(uart_base); - if (c == '\n') - console_putc('\r'); + if (c == '\n') { + WAIT_UNTIL_UART_FREE(uart_base); + pl011_write_dr(uart_base, '\r'); + } - while ((pl011_read_fr(uart_base) & PL011_UARTFR_TXFF) == 1) - ; + WAIT_UNTIL_UART_FREE(uart_base); pl011_write_dr(uart_base, c); return c; } |