mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00
Add and use plat_crash_console_flush() API
This API makes sure that all the characters sent to the crash console are output before returning from it. Porting guide updated. Change-Id: I1785f970a40f6aacfbe592b6a911b1f249bb2735 Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
ad4c2ec688
commit
801cf93c48
9 changed files with 102 additions and 9 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -349,6 +349,8 @@ func do_crash_reporting
|
||||||
/* Print some platform registers */
|
/* Print some platform registers */
|
||||||
plat_crash_print_regs
|
plat_crash_print_regs
|
||||||
|
|
||||||
|
bl plat_crash_console_flush
|
||||||
|
|
||||||
/* Done reporting */
|
/* Done reporting */
|
||||||
no_ret plat_panic_handler
|
no_ret plat_panic_handler
|
||||||
endfunc do_crash_reporting
|
endfunc do_crash_reporting
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -70,6 +70,9 @@ func do_panic
|
||||||
/* Print new line */
|
/* Print new line */
|
||||||
ldr r4, =panic_end
|
ldr r4, =panic_end
|
||||||
bl asm_print_str
|
bl asm_print_str
|
||||||
|
|
||||||
|
bl plat_crash_console_flush
|
||||||
|
|
||||||
1:
|
1:
|
||||||
mov lr, r6
|
mov lr, r6
|
||||||
b plat_panic_handler
|
b plat_panic_handler
|
||||||
|
@ -140,6 +143,9 @@ dec_print_loop:
|
||||||
udiv r5, r5, r6 /* Reduce divisor */
|
udiv r5, r5, r6 /* Reduce divisor */
|
||||||
cmp r5, #0
|
cmp r5, #0
|
||||||
bne dec_print_loop
|
bne dec_print_loop
|
||||||
|
|
||||||
|
bl plat_crash_console_flush
|
||||||
|
|
||||||
1:
|
1:
|
||||||
no_ret plat_panic_handler
|
no_ret plat_panic_handler
|
||||||
endfunc asm_assert
|
endfunc asm_assert
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -96,6 +96,7 @@ func asm_assert
|
||||||
b.ne _assert_loop
|
b.ne _assert_loop
|
||||||
mov x4, x6
|
mov x4, x6
|
||||||
asm_print_line_dec
|
asm_print_line_dec
|
||||||
|
bl plat_crash_console_flush
|
||||||
_assert_loop:
|
_assert_loop:
|
||||||
b _assert_loop
|
b _assert_loop
|
||||||
endfunc asm_assert
|
endfunc asm_assert
|
||||||
|
@ -187,6 +188,8 @@ el3_panic:
|
||||||
sub x4, x4, #4
|
sub x4, x4, #4
|
||||||
bl asm_print_hex
|
bl asm_print_hex
|
||||||
|
|
||||||
|
bl plat_crash_console_flush
|
||||||
|
|
||||||
_panic_handler:
|
_panic_handler:
|
||||||
/* Pass to plat_panic_handler the address from where el3_panic was
|
/* Pass to plat_panic_handler the address from where el3_panic was
|
||||||
* called, not the address of the call from el3_panic. */
|
* called, not the address of the call from el3_panic. */
|
||||||
|
|
|
@ -2228,6 +2228,17 @@ designated crash console. It must only use general purpose registers x1 and
|
||||||
x2 to do its work. The parameter and the return value are in general purpose
|
x2 to do its work. The parameter and the return value are in general purpose
|
||||||
register x0.
|
register x0.
|
||||||
|
|
||||||
|
### Function : plat_crash_console_flush
|
||||||
|
|
||||||
|
Argument : void
|
||||||
|
Return : int
|
||||||
|
|
||||||
|
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 and x1 to do its work. The return value is 0 on successful
|
||||||
|
completion; otherwise the return value is -1.
|
||||||
|
|
||||||
|
|
||||||
4. Build flags
|
4. Build flags
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,7 @@ uintptr_t plat_get_my_stack(void);
|
||||||
void plat_report_exception(unsigned int exception_type);
|
void plat_report_exception(unsigned int exception_type);
|
||||||
int plat_crash_console_init(void);
|
int plat_crash_console_init(void);
|
||||||
int plat_crash_console_putc(int c);
|
int plat_crash_console_putc(int c);
|
||||||
|
int plat_crash_console_flush(void);
|
||||||
void plat_error_handler(int err) __dead2;
|
void plat_error_handler(int err) __dead2;
|
||||||
void plat_panic_handler(void) __dead2;
|
void plat_panic_handler(void) __dead2;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -31,9 +31,10 @@
|
||||||
#include <platform_def.h>
|
#include <platform_def.h>
|
||||||
|
|
||||||
.weak plat_arm_calc_core_pos
|
.weak plat_arm_calc_core_pos
|
||||||
.weak plat_crash_console_init
|
|
||||||
.weak plat_crash_console_putc
|
|
||||||
.weak plat_my_core_pos
|
.weak plat_my_core_pos
|
||||||
|
.globl plat_crash_console_init
|
||||||
|
.globl plat_crash_console_putc
|
||||||
|
.globl plat_crash_console_flush
|
||||||
|
|
||||||
/* -----------------------------------------------------
|
/* -----------------------------------------------------
|
||||||
* unsigned int plat_my_core_pos(void)
|
* unsigned int plat_my_core_pos(void)
|
||||||
|
@ -85,3 +86,16 @@ func plat_crash_console_putc
|
||||||
ldr r1, =PLAT_ARM_CRASH_UART_BASE
|
ldr r1, =PLAT_ARM_CRASH_UART_BASE
|
||||||
b console_core_putc
|
b console_core_putc
|
||||||
endfunc plat_crash_console_putc
|
endfunc plat_crash_console_putc
|
||||||
|
|
||||||
|
/* ---------------------------------------------
|
||||||
|
* int plat_crash_console_flush()
|
||||||
|
* Function to force a write of all buffered
|
||||||
|
* data that hasn't been output.
|
||||||
|
* Out : return -1 on error else return 0.
|
||||||
|
* Clobber list : r0 - r1
|
||||||
|
* ---------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_flush
|
||||||
|
ldr r1, =PLAT_ARM_CRASH_UART_BASE
|
||||||
|
b console_core_flush
|
||||||
|
endfunc plat_crash_console_flush
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -34,6 +34,7 @@
|
||||||
.weak plat_my_core_pos
|
.weak plat_my_core_pos
|
||||||
.globl plat_crash_console_init
|
.globl plat_crash_console_init
|
||||||
.globl plat_crash_console_putc
|
.globl plat_crash_console_putc
|
||||||
|
.globl plat_crash_console_flush
|
||||||
.globl platform_mem_init
|
.globl platform_mem_init
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,6 +89,19 @@ func plat_crash_console_putc
|
||||||
b console_core_putc
|
b console_core_putc
|
||||||
endfunc plat_crash_console_putc
|
endfunc plat_crash_console_putc
|
||||||
|
|
||||||
|
/* ---------------------------------------------
|
||||||
|
* int plat_crash_console_flush()
|
||||||
|
* Function to force a write of all buffered
|
||||||
|
* data that hasn't been output.
|
||||||
|
* Out : return -1 on error else return 0.
|
||||||
|
* Clobber list : r0 - r1
|
||||||
|
* ---------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_flush
|
||||||
|
mov_imm x1, PLAT_ARM_CRASH_UART_BASE
|
||||||
|
b console_core_flush
|
||||||
|
endfunc plat_crash_console_flush
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------
|
/* ---------------------------------------------------------------------
|
||||||
* We don't need to carry out any memory initialization on ARM
|
* We don't need to carry out any memory initialization on ARM
|
||||||
* platforms. The Secure RAM is accessible straight away.
|
* platforms. The Secure RAM is accessible straight away.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -31,11 +31,43 @@
|
||||||
#include <arch.h>
|
#include <arch.h>
|
||||||
#include <asm_macros.S>
|
#include <asm_macros.S>
|
||||||
|
|
||||||
|
.weak plat_crash_console_init
|
||||||
|
.weak plat_crash_console_putc
|
||||||
|
.weak plat_crash_console_flush
|
||||||
.weak plat_reset_handler
|
.weak plat_reset_handler
|
||||||
.weak plat_disable_acp
|
.weak plat_disable_acp
|
||||||
.weak platform_mem_init
|
.weak platform_mem_init
|
||||||
.weak plat_panic_handler
|
.weak plat_panic_handler
|
||||||
|
|
||||||
|
/* -----------------------------------------------------
|
||||||
|
* Placeholder function which should be redefined by
|
||||||
|
* each platform.
|
||||||
|
* -----------------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_init
|
||||||
|
mov r0, #0
|
||||||
|
bx lr
|
||||||
|
endfunc plat_crash_console_init
|
||||||
|
|
||||||
|
/* -----------------------------------------------------
|
||||||
|
* Placeholder function which should be redefined by
|
||||||
|
* each platform.
|
||||||
|
* -----------------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_putc
|
||||||
|
bx lr
|
||||||
|
endfunc plat_crash_console_putc
|
||||||
|
|
||||||
|
/* -----------------------------------------------------
|
||||||
|
* Placeholder function which should be redefined by
|
||||||
|
* each platform.
|
||||||
|
* -----------------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_flush
|
||||||
|
mov r0, #0
|
||||||
|
bx lr
|
||||||
|
endfunc plat_crash_console_flush
|
||||||
|
|
||||||
/* -----------------------------------------------------
|
/* -----------------------------------------------------
|
||||||
* Placeholder function which should be redefined by
|
* Placeholder function which should be redefined by
|
||||||
* each platform.
|
* each platform.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -35,6 +35,7 @@
|
||||||
.weak plat_report_exception
|
.weak plat_report_exception
|
||||||
.weak plat_crash_console_init
|
.weak plat_crash_console_init
|
||||||
.weak plat_crash_console_putc
|
.weak plat_crash_console_putc
|
||||||
|
.weak plat_crash_console_flush
|
||||||
.weak plat_reset_handler
|
.weak plat_reset_handler
|
||||||
.weak plat_disable_acp
|
.weak plat_disable_acp
|
||||||
.weak bl1_plat_prepare_exit
|
.weak bl1_plat_prepare_exit
|
||||||
|
@ -96,6 +97,15 @@ func plat_crash_console_putc
|
||||||
ret
|
ret
|
||||||
endfunc plat_crash_console_putc
|
endfunc plat_crash_console_putc
|
||||||
|
|
||||||
|
/* -----------------------------------------------------
|
||||||
|
* Placeholder function which should be redefined by
|
||||||
|
* each platform.
|
||||||
|
* -----------------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_flush
|
||||||
|
ret
|
||||||
|
endfunc plat_crash_console_flush
|
||||||
|
|
||||||
/* -----------------------------------------------------
|
/* -----------------------------------------------------
|
||||||
* Placeholder function which should be redefined by
|
* Placeholder function which should be redefined by
|
||||||
* each platform. This function should preserve x19 - x29.
|
* each platform. This function should preserve x19 - x29.
|
||||||
|
|
Loading…
Add table
Reference in a new issue