From b2f7c9dd8052d5dd093f5875022a368e18a41383 Mon Sep 17 00:00:00 2001 From: Julius Werner Date: Tue, 20 Nov 2018 13:02:27 -0800 Subject: plat/common: Remove duplication of plat_crash_console functions/stubs Commit e74afb652 (Deprecate weak crash console functions) deprecated the default inclusion of weak definitions for plat_crash_console functions in plat/common/aarch64/platform_helpers.S. The code was later copied out to plat/common/aarch64/crash_console_helpers.S so platforms can link it explicitly if they want to. However, since deprecation does not mean removal, the same code is also still duplicated in platform_helpers.S. The duplicated code contains both empty stubs for the !MULTI_CONSOLE_API case, and a real implementation that used to work but was broken by commit d35cc34 (Console: Use callee-saved registers) for MULTI_CONSOLE_API. It's not great to have both of these duplicated in two files, so this patch splits them up: in platform_helpers.S we'll only keep the empty stubs (guarded by !ERROR_DEPRECATED), which should not regress functionality since the MULTI_CONSOLE_API implementation was already broken anyway. In crash_console_helpers.S, we'll only keep the MULTI_CONSOLE_API version, which is enough both as an implementation in itself and as a sample for how to reimplement these functions in a platform-specific file. Change-Id: I83d95a90ab6aac597dc2ea2f2797ac2c8ed075d4 Signed-off-by: Julius Werner --- plat/common/aarch64/crash_console_helpers.S | 26 ++----------- plat/common/aarch64/platform_helpers.S | 60 ----------------------------- 2 files changed, 3 insertions(+), 83 deletions(-) (limited to 'plat/common') diff --git a/plat/common/aarch64/crash_console_helpers.S b/plat/common/aarch64/crash_console_helpers.S index 5af8db25..55e7abbf 100644 --- a/plat/common/aarch64/crash_console_helpers.S +++ b/plat/common/aarch64/crash_console_helpers.S @@ -16,7 +16,9 @@ .globl plat_crash_console_putc .globl plat_crash_console_flush -#if MULTI_CONSOLE_API +#if !MULTI_CONSOLE_API +#error "This crash console implementation only works with the MULTI_CONSOLE_API!" +#endif /* ----------------------------------------------------- * int plat_crash_console_init(void) @@ -68,25 +70,3 @@ endfunc plat_crash_console_putc func plat_crash_console_flush b console_flush endfunc plat_crash_console_flush - -#else /* MULTI_CONSOLE_API */ - - /* ----------------------------------------------------- - * In the old API these are all no-op stubs that need to - * be overridden by the platform to be useful. - * ----------------------------------------------------- - */ -func plat_crash_console_init - mov x0, #0 - ret -endfunc plat_crash_console_init - -func plat_crash_console_putc - ret -endfunc plat_crash_console_putc - -func plat_crash_console_flush - ret -endfunc plat_crash_console_flush - -#endif diff --git a/plat/common/aarch64/platform_helpers.S b/plat/common/aarch64/platform_helpers.S index d3ffcaf1..89523194 100644 --- a/plat/common/aarch64/platform_helpers.S +++ b/plat/common/aarch64/platform_helpers.S @@ -40,65 +40,6 @@ func plat_report_exception endfunc plat_report_exception #if !ERROR_DEPRECATED -#if MULTI_CONSOLE_API - /* ----------------------------------------------------- - * int plat_crash_console_init(void) - * Use normal console by default. Switch it to crash - * mode so serial consoles become active again. - * NOTE: This default implementation will only work for - * crashes that occur after a normal console (marked - * valid for the crash state) has been registered with - * the console framework. To debug crashes that occur - * earlier, the platform has to override these functions - * with an implementation that initializes a console - * driver with hardcoded parameters. See - * docs/porting-guide.rst for more information. - * ----------------------------------------------------- - */ -func plat_crash_console_init -#if defined(IMAGE_BL1) - /* - * BL1 code can possibly crash so early that the data segment is not yet - * accessible. Don't risk undefined behavior by trying to run the normal - * console framework. Platforms that want to debug BL1 will need to - * override this with custom functions that can run from registers only. - */ - mov x0, #0 - ret -#else /* IMAGE_BL1 */ - mov x3, x30 - mov x0, #CONSOLE_FLAG_CRASH - bl console_switch_state - mov x0, #1 - ret x3 -#endif -endfunc plat_crash_console_init - - /* ----------------------------------------------------- - * void plat_crash_console_putc(int character) - * Output through the normal console by default. - * ----------------------------------------------------- - */ -func plat_crash_console_putc - b console_putc -endfunc plat_crash_console_putc - - /* ----------------------------------------------------- - * void plat_crash_console_flush(void) - * Flush normal console by default. - * ----------------------------------------------------- - */ -func plat_crash_console_flush - b console_flush -endfunc plat_crash_console_flush - -#else /* MULTI_CONSOLE_API */ - - /* ----------------------------------------------------- - * In the old API these are all no-op stubs that need to - * be overridden by the platform to be useful. - * ----------------------------------------------------- - */ func plat_crash_console_init mov x0, #0 ret @@ -111,7 +52,6 @@ endfunc plat_crash_console_putc func plat_crash_console_flush ret endfunc plat_crash_console_flush -#endif #endif /* ERROR_DEPRECATED */ /* ----------------------------------------------------- -- cgit v1.2.3