openrisc: Add support for liteuart emergency printing
authorStafford Horne <shorne@gmail.com>
Sun, 15 May 2022 04:33:14 +0000 (13:33 +0900)
committerStafford Horne <shorne@gmail.com>
Mon, 23 May 2022 08:15:49 +0000 (17:15 +0900)
This patch adds support for sending emergency print output, such as
unhandled exception details, to a liteuart serial device.  This is the
default device available on litex platforms.

If a developer want to use this they should update UART_BASE_ADD
to the address of liteuart.

Signed-off-by: Stafford Horne <shorne@gmail.com>
arch/openrisc/kernel/head.S

index 7bfa6e4..21db505 100644 (file)
@@ -1555,7 +1555,18 @@ ENTRY(_emergency_putc)
        l.movhi r4,hi(UART_BASE_ADD)
        l.ori   r4,r4,lo(UART_BASE_ADD)
 
-#if defined(CONFIG_SERIAL_8250)
+#if defined(CONFIG_SERIAL_LITEUART)
+       /* Check OFF_TXFULL status */
+1:      l.lwz  r5,4(r4)
+       l.andi  r5,r5,0xff
+       l.sfnei r5,0
+       l.bf    1b
+        l.nop
+
+       /* Write character */
+       l.andi  r7,r7,0xff
+       l.sw    0(r4),r7
+#elif defined(CONFIG_SERIAL_8250)
        /* Check UART LSR THRE (hold) bit */
        l.addi  r6,r0,0x20
 1:      l.lbz   r5,5(r4)