xref: /rk3399_ARM-atf/plat/common/aarch32/crash_console_helpers.S (revision 39c92b6271f4bde4e84f2459dbc18228cedd7825)
16c9ada31SAntonio Nino Diaz/*
26c9ada31SAntonio Nino Diaz * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
36c9ada31SAntonio Nino Diaz *
46c9ada31SAntonio Nino Diaz * SPDX-License-Identifier: BSD-3-Clause
56c9ada31SAntonio Nino Diaz */
66c9ada31SAntonio Nino Diaz
76c9ada31SAntonio Nino Diaz/*
86c9ada31SAntonio Nino Diaz * If a platform wishes to use the functions in this file it has to be added to
96c9ada31SAntonio Nino Diaz * the Makefile of the platform. It is not included in the common Makefile.
106c9ada31SAntonio Nino Diaz */
116c9ada31SAntonio Nino Diaz
126c9ada31SAntonio Nino Diaz#include <asm_macros.S>
13*09d40e0eSAntonio Nino Diaz#include <drivers/console.h>
146c9ada31SAntonio Nino Diaz
156c9ada31SAntonio Nino Diaz	.globl	plat_crash_console_init
166c9ada31SAntonio Nino Diaz	.globl	plat_crash_console_putc
176c9ada31SAntonio Nino Diaz	.globl	plat_crash_console_flush
186c9ada31SAntonio Nino Diaz
196c9ada31SAntonio Nino Diaz	/* -----------------------------------------------------
206c9ada31SAntonio Nino Diaz	 * int plat_crash_console_init(void)
216c9ada31SAntonio Nino Diaz	 * Use normal console by default. Switch it to crash
226c9ada31SAntonio Nino Diaz	 * mode so serial consoles become active again.
236c9ada31SAntonio Nino Diaz	 * NOTE: This default implementation will only work for
246c9ada31SAntonio Nino Diaz	 * crashes that occur after a normal console (marked
256c9ada31SAntonio Nino Diaz	 * valid for the crash state) has been registered with
266c9ada31SAntonio Nino Diaz	 * the console framework. To debug crashes that occur
276c9ada31SAntonio Nino Diaz	 * earlier, the platform has to override these functions
286c9ada31SAntonio Nino Diaz	 * with an implementation that initializes a console
296c9ada31SAntonio Nino Diaz	 * driver with hardcoded parameters. See
306c9ada31SAntonio Nino Diaz	 * docs/porting-guide.rst for more information.
316c9ada31SAntonio Nino Diaz	 * -----------------------------------------------------
326c9ada31SAntonio Nino Diaz	 */
336c9ada31SAntonio Nino Diazfunc plat_crash_console_init
346c9ada31SAntonio Nino Diaz#if defined(IMAGE_BL1)
356c9ada31SAntonio Nino Diaz	/*
366c9ada31SAntonio Nino Diaz	 * BL1 code can possibly crash so early that the data segment is not yet
376c9ada31SAntonio Nino Diaz	 * accessible. Don't risk undefined behavior by trying to run the normal
386c9ada31SAntonio Nino Diaz	 * console framework. Platforms that want to debug BL1 will need to
396c9ada31SAntonio Nino Diaz	 * override this with custom functions that can run from registers only.
406c9ada31SAntonio Nino Diaz	 */
416c9ada31SAntonio Nino Diaz	mov	r0, #0
426c9ada31SAntonio Nino Diaz	bx	lr
436c9ada31SAntonio Nino Diaz#else	/* IMAGE_BL1 */
446c9ada31SAntonio Nino Diaz	mov	r3, lr
456c9ada31SAntonio Nino Diaz	mov	r0, #CONSOLE_FLAG_CRASH
466c9ada31SAntonio Nino Diaz	bl	console_switch_state
476c9ada31SAntonio Nino Diaz	mov	r0, #1
486c9ada31SAntonio Nino Diaz	bx	r3
496c9ada31SAntonio Nino Diaz#endif
506c9ada31SAntonio Nino Diazendfunc plat_crash_console_init
516c9ada31SAntonio Nino Diaz
526c9ada31SAntonio Nino Diaz	/* -----------------------------------------------------
536c9ada31SAntonio Nino Diaz	 * void plat_crash_console_putc(int character)
546c9ada31SAntonio Nino Diaz	 * Output through the normal console by default.
556c9ada31SAntonio Nino Diaz	 * -----------------------------------------------------
566c9ada31SAntonio Nino Diaz	 */
576c9ada31SAntonio Nino Diazfunc plat_crash_console_putc
586c9ada31SAntonio Nino Diaz	b	console_putc
596c9ada31SAntonio Nino Diazendfunc plat_crash_console_putc
606c9ada31SAntonio Nino Diaz
616c9ada31SAntonio Nino Diaz	/* -----------------------------------------------------
626c9ada31SAntonio Nino Diaz	 * void plat_crash_console_flush(void)
636c9ada31SAntonio Nino Diaz	 * Flush normal console by default.
646c9ada31SAntonio Nino Diaz	 * -----------------------------------------------------
656c9ada31SAntonio Nino Diaz	 */
666c9ada31SAntonio Nino Diazfunc plat_crash_console_flush
676c9ada31SAntonio Nino Diaz	b	console_flush
686c9ada31SAntonio Nino Diazendfunc plat_crash_console_flush
69