mirror of
https://github.com/ipxe/ipxe
synced 2025-12-08 10:20:24 +03:00
[riscv] Write SBI console output to early UART, if enabled
The early UART is an optional feature used to obtain debug output from the prefix before iPXE is able to parse the device tree. Extend this feature to also cover any console output that iPXE attempts to send to the SBI console, on the basis that the purpose of the early UART is to provide an output-only device for situations in which there is no functional SBI console. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -41,6 +41,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
#define CONSOLE_SBI ( CONSOLE_USAGE_ALL & ~CONSOLE_USAGE_LOG )
|
||||
#endif
|
||||
|
||||
extern void early_uart_putchar ( int character );
|
||||
|
||||
/** Buffered input character (if any) */
|
||||
static unsigned char sbi_console_input;
|
||||
|
||||
@@ -52,6 +54,9 @@ static unsigned char sbi_console_input;
|
||||
static void sbi_putchar ( int character ) {
|
||||
struct sbi_return ret;
|
||||
|
||||
/* Write byte to early UART, if enabled */
|
||||
early_uart_putchar ( character );
|
||||
|
||||
/* Write byte to console */
|
||||
ret = sbi_ecall_1 ( SBI_DBCN, SBI_DBCN_WRITE_BYTE, character );
|
||||
if ( ! ret.error )
|
||||
|
||||
@@ -243,6 +243,32 @@ early_uart_sifive_wait_\@:
|
||||
bltz a1, early_uart_sifive_wait_\@
|
||||
.endm
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Print single character to early UART (from C code)
|
||||
*
|
||||
*****************************************************************************
|
||||
*
|
||||
* This function is called by the SBI console driver to output a
|
||||
* character to the early UART (if enabled).
|
||||
*
|
||||
* The standard C ABI applies to this function.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* a0 - Character to print
|
||||
*
|
||||
* Returns: none
|
||||
*
|
||||
*/
|
||||
|
||||
.section ".prefix.early_uart_putchar", "ax", @progbits
|
||||
.globl early_uart_putchar
|
||||
early_uart_putchar:
|
||||
print_char_uart
|
||||
ret
|
||||
.size early_uart_putchar, . - early_uart_putchar
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Print message to debug console
|
||||
|
||||
Reference in New Issue
Block a user