Commit dfe577a8 authored by Mark Dykes's avatar Mark Dykes Committed by TrustedFirmware Code Review
Browse files

Merge "Don't return error information from console_flush" into integration

parents 5dfe680f 831b0e98
......@@ -261,7 +261,7 @@ void backtrace(const char *cookie)
struct frame_record *fr = __builtin_frame_address(0U);
/* Printing the backtrace may crash the system, flush before starting */
(void)console_flush();
console_flush();
fr = adjust_frame_record(fr);
......
......@@ -2724,12 +2724,11 @@ Function : plat_crash_console_flush [mandatory]
::
Argument : void
Return : int
Return : void
This API is used by the crash reporting mechanism to force write of all buffered
data on the designated crash console. It should only use general purpose
registers x0 through x5 to do its work. The return value is 0 on successful
completion; otherwise the return value is -1.
registers x0 through x5 to do its work.
.. _External Abort handling and RAS Support:
......
/*
* Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -224,11 +224,11 @@ func console_meson_core_getc
endfunc console_meson_core_getc
/* ---------------------------------------------
* int console_meson_flush(console_t *console)
* void console_meson_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
......@@ -242,11 +242,11 @@ func console_meson_flush
endfunc console_meson_flush
/* ---------------------------------------------
* int console_meson_core_flush(uintptr_t base_addr)
* void console_meson_core_flush(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - console base address
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
......@@ -258,6 +258,5 @@ func console_meson_core_flush
/* Wait until the transmit FIFO is empty */
1: ldr w1, [x0, #MESON_STATUS_OFFSET]
tbz w1, #MESON_STATUS_TX_EMPTY_BIT, 1b
mov w0, #0
ret
endfunc console_meson_core_flush
/*
* Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -222,17 +222,19 @@ func console_pl011_getc
endfunc console_pl011_getc
/* ---------------------------------------------
* int console_core_flush(uintptr_t base_addr)
* void console_core_flush(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : r0 - console base address
* Out : return -1 on error else return 0.
* Out : void
* Clobber list : r0, r1
* ---------------------------------------------
*/
func console_pl011_core_flush
#if ENABLE_ASSERTIONS
cmp r0, #0
beq flush_error
ASM_ASSERT(ne)
#endif /* ENABLE_ASSERTIONS */
1:
/* Loop while the transmit FIFO is busy */
......@@ -240,19 +242,15 @@ func console_pl011_core_flush
tst r1, #PL011_UARTFR_BUSY
bne 1b
mov r0, #0
bx lr
flush_error:
mov r0, #-1
bx lr
endfunc console_pl011_core_flush
/* ---------------------------------------------
* int console_pl011_flush(console_t *console)
* void console_pl011_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : r0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void
* Clobber list: r0, r1
* ---------------------------------------------
*/
......
/*
* Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -208,11 +208,11 @@ func console_pl011_getc
endfunc console_pl011_getc
/* ---------------------------------------------
* int console_pl011_core_flush(uintptr_t base_addr)
* void console_pl011_core_flush(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - console base address
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
......@@ -225,17 +225,15 @@ func console_pl011_core_flush
/* Loop until the transmit FIFO is empty */
ldr w1, [x0, #UARTFR]
tbnz w1, #PL011_UARTFR_BUSY_BIT, 1b
mov w0, #0
ret
endfunc console_pl011_core_flush
/* ---------------------------------------------
* int console_pl011_flush(console_t *console)
* void console_pl011_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void
* Clobber list : x0, x1
* ---------------------------------------------
*/
......
/*
* Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -184,11 +184,11 @@ func console_cdns_getc
endfunc console_cdns_getc
/* ---------------------------------------------
* int console_cdns_core_flush(uintptr_t base_addr)
* void console_cdns_core_flush(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - console base address
* Out : return -1 on error else return 0.
* Out : void
* Clobber list : x0, x1
* ---------------------------------------------
*/
......@@ -198,16 +198,15 @@ func console_cdns_core_flush
ASM_ASSERT(ne)
#endif /* ENABLE_ASSERTIONS */
/* Placeholder */
mov w0, #0
ret
endfunc console_cdns_core_flush
/* ---------------------------------------------
* int console_cdns_flush(console_t *console)
* void console_cdns_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
......
/*
* Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -149,7 +149,7 @@ endfunc console_xxx_getc
* Function to force a write of all buffered
* data that hasn't been output.
* In : r0 - pointer to console_xxx_t struct
* Out: r0 - 0 on success, < 0 on error
* Out: void
* Clobber list : r0, r1, r2, r3, r4, r5
* ---------------------------------------------
*/
......@@ -166,11 +166,5 @@ func console_xxx_flush
* all data has been flushed or there was an unrecoverable error.
*/
mov r0, #0
bx lr
/* Jump here if an unrecoverable error has been encountered. */
flush_error:
mov r0, #-1
bx lr
endfunc console_xxx_flush
/*
* Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -145,11 +145,11 @@ getc_error:
endfunc console_xxx_getc
/* ---------------------------------------------
* int console_xxx_flush(console_xxx_t *console)
* void console_xxx_flush(console_xxx_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - pointer to console_xxx_t struct
* Out: w0 - 0 on success, < 0 on error
* Out: void
* Clobber list : x0, x1, x2, x3, x4, x5
* ---------------------------------------------
*/
......@@ -166,11 +166,5 @@ func console_xxx_flush
* all data has been flushed or there was an unrecoverable error.
*/
mov w0, #0
ret
/* Jump here if an unrecoverable error has been encountered. */
flush_error:
mov w0, #-1
ret
endfunc console_xxx_flush
......@@ -119,17 +119,12 @@ int console_getc(void)
return err;
}
int console_flush(void)
void console_flush(void)
{
int err = ERROR_NO_VALID_CONSOLE;
console_t *console;
for (console = console_list; console != NULL; console = console->next)
if ((console->flags & console_state) && (console->flush != NULL)) {
int ret = console->flush(console);
if ((err == ERROR_NO_VALID_CONSOLE) || (ret < err))
err = ret;
console->flush(console);
}
return err;
}
/*
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -82,20 +82,17 @@ putc_write_back:
endfunc console_cbmc_putc
/* -----------------------------------------------
* int console_cbmc_flush(console_cbmc_t *console)
* void console_cbmc_flush(console_cbmc_t *console)
* Flushes the CBMEM console by flushing the
* console buffer from the CPU's data cache.
* In: x0 - pointer to console_cbmc_t struct
* Out: x0 - 0 for success
* Clobber list: x0, x1, x2, x3, x5
* Out: void
* Clobber list: x0, x1, x2, x3
* -----------------------------------------------
*/
func console_cbmc_flush
mov x5, x30
ldr x1, [x0, #CONSOLE_T_CBMC_SIZE]
ldr x0, [x0, #CONSOLE_T_BASE]
add x1, x1, #8 /* add size of console header */
bl clean_dcache_range /* (clobbers x2 and x3) */
mov x0, #0
ret x5
b clean_dcache_range /* (clobbers x2 and x3) */
endfunc console_cbmc_flush
......@@ -171,12 +171,11 @@ int console_imx_uart_core_getc(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : r0 - console base address
* Out : return -1 on error else return 0.
* Out : void
* Clobber list : r0, r1
* ---------------------------------------------
*/
int console_imx_uart_core_flush(uintptr_t base_addr)
void console_imx_uart_core_flush(uintptr_t base_addr)
{
return 0;
}
......@@ -223,25 +223,24 @@ func console_a3700_getc
endfunc console_a3700_getc
/* ---------------------------------------------
* int console_a3700_core_flush(uintptr_t base_addr)
* void console_a3700_core_flush(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - console base address
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
func console_a3700_core_flush
mov w0, #0
ret
endfunc console_a3700_core_flush
/* ---------------------------------------------
* int console_a3700_flush(console_t *console)
* void console_a3700_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
......
......@@ -82,15 +82,12 @@ func console_rcar_putc
endfunc console_rcar_putc
/* ---------------------------------------------
* int console_rcar_flush(void)
* void console_rcar_flush(void)
* Function to force a write of all buffered
* data that hasn't been output. It returns 0
* upon successful completion, otherwise it
* returns -1.
* data that hasn't been output. It returns void
* Clobber list : x0, x1
* ---------------------------------------------
*/
func console_rcar_flush
mov w0, #0
ret
endfunc console_rcar_flush
......@@ -305,11 +305,9 @@ func console_rcar_putc
endfunc console_rcar_putc
/* ---------------------------------------------
* int console_rcar_flush(void)
* void console_rcar_flush(void)
* Function to force a write of all buffered
* data that hasn't been output. It returns 0
* upon successful completion, otherwise it
* returns -1.
* data that hasn't been output. It returns void
* Clobber list : x0, x1
* ---------------------------------------------
*/
......@@ -327,6 +325,5 @@ func console_rcar_flush
and w1, w1, #~(SCSCR_TE_EN + SCSCR_RE_EN)
strh w1, [x0, #SCIF_SCSCR]
mov w0, #0
ret
endfunc console_rcar_flush
/*
* Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -193,37 +193,35 @@ func console_stm32_core_getc
endfunc console_stm32_core_getc
/* ---------------------------------------------------------------
* int console_core_flush(uintptr_t base_addr)
* void console_core_flush(uintptr_t base_addr)
*
* Function to force a write of all buffered data that hasn't been
* output.
*
* In : r0 - console base address
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : r0, r1
* ---------------------------------------------------------------
*/
func console_stm32_core_flush
#if ENABLE_ASSERTIONS
cmp r0, #0
beq flush_error
ASM_ASSERT(ne)
#endif /* ENABLE_ASSERTIONS */
/* Check Transmit Data Register Empty */
txe_loop_3:
ldr r1, [r0, #USART_ISR]
tst r1, #USART_ISR_TXE
beq txe_loop_3
mov r0, #0
bx lr
flush_error:
mov r0, #-1
bx lr
endfunc console_stm32_core_flush
/* ------------------------------------------------------
* int console_stm32_flush(console_t *console)
* void console_stm32_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : r0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list: r0, r1
* ------------------------------------------------------
*/
......
/*
* Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -232,11 +232,11 @@ func console_16550_getc
endfunc console_16550_getc
/* ---------------------------------------------
* int console_16550_core_flush(uintptr_t base_addr)
* void console_16550_core_flush(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : r0 - console base address
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : r0, r1
* ---------------------------------------------
*/
......@@ -252,16 +252,15 @@ func console_16550_core_flush
cmp r1, #(UARTLSR_TEMT | UARTLSR_THRE)
bne 1b
mov r0, #0
bx lr
endfunc console_16550_core_flush
/* ---------------------------------------------
* int console_16550_flush(console_t *console)
* void console_16550_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : r0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void
* Clobber list : r0, r1
* ---------------------------------------------
*/
......
/*
* Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -225,11 +225,11 @@ func console_16550_getc
endfunc console_16550_getc
/* ---------------------------------------------
* int console_16550_core_flush(uintptr_t base_addr)
* void console_16550_core_flush(uintptr_t base_addr)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - console base address
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
......@@ -245,16 +245,15 @@ func console_16550_core_flush
cmp w1, #(UARTLSR_TEMT | UARTLSR_THRE)
b.ne 1b
mov w0, #0
ret
endfunc console_16550_core_flush
/* ---------------------------------------------
* int console_16550_flush(console_t *console)
* void console_16550_flush(console_t *console)
* Function to force a write of all buffered
* data that hasn't been output.
* In : x0 - pointer to console_t structure
* Out : return -1 on error else return 0.
* Out : void.
* Clobber list : x0, x1
* ---------------------------------------------
*/
......
......@@ -101,7 +101,7 @@ void __dead2 do_panic(void);
#define panic() \
do { \
backtrace(__func__); \
(void)console_flush(); \
console_flush(); \
do_panic(); \
} while (false)
......
/*
* Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -43,7 +43,7 @@ typedef struct console {
u_register_t flags;
int (*const putc)(int character, struct console *console);
int (*const getc)(struct console *console);
int (*const flush)(struct console *console);
void (*const flush)(struct console *console);
uintptr_t base;
/* Additional private driver data may follow here. */
} console_t;
......@@ -76,7 +76,7 @@ int console_putc(int c);
/* Read a character (blocking) from any console registered for current state. */
int console_getc(void);
/* Flush all consoles registered for the current state. */
int console_flush(void);
void console_flush(void);
#endif /* __ASSEMBLER__ */
......
......@@ -111,7 +111,7 @@ uintptr_t plat_get_my_stack(void);
void plat_report_exception(unsigned int exception_type);
int plat_crash_console_init(void);
int plat_crash_console_putc(int c);
int plat_crash_console_flush(void);
void plat_crash_console_flush(void);
void plat_error_handler(int err) __dead2;
void plat_panic_handler(void) __dead2;
const char *plat_log_get_prefix(unsigned int log_level);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment