mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-25 14:25:44 +00:00
Check presence of fix for errata 843419 in Cortex-A53
A fix for errata 843419 may be available in revision r0p4 of the Cortex-A53 processor. The presence of the fix is determined by checking bit 8 in the REVIDR register. If the fix is present we report ERRATA_NOT_APPLIES which silences the erroneous 'missing workaround' warning. Change-Id: Ibd2a478df3e2a6325442a6a48a0bb0259dcfc1d7 Signed-off-by: Jonathan Wright <jonathan.wright@arm.com>
This commit is contained in:
parent
aa2fcb4399
commit
9ec3921c02
3 changed files with 23 additions and 3 deletions
|
@ -230,6 +230,7 @@ CPU_OPS_SIZE = .
|
||||||
|
|
||||||
/* Check whether errata applies */
|
/* Check whether errata applies */
|
||||||
mov x0, \_rev_var
|
mov x0, \_rev_var
|
||||||
|
/* Shall clobber: x0-x7 */
|
||||||
bl check_errata_\_id
|
bl check_errata_\_id
|
||||||
|
|
||||||
.ifeq \_chosen
|
.ifeq \_chosen
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
#include <cortex_a53.h>
|
#include <cortex_a53.h>
|
||||||
#include <cpu_macros.S>
|
#include <cpu_macros.S>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
#include <errata_report.h>
|
||||||
#include <plat_macros.S>
|
#include <plat_macros.S>
|
||||||
|
|
||||||
#if A53_DISABLE_NON_TEMPORAL_HINT
|
#if A53_DISABLE_NON_TEMPORAL_HINT
|
||||||
|
@ -154,8 +155,22 @@ endfunc check_errata_835769
|
||||||
* This workaround is statically enabled at build time.
|
* This workaround is statically enabled at build time.
|
||||||
*/
|
*/
|
||||||
func check_errata_843419
|
func check_errata_843419
|
||||||
mov x1, #0x04
|
mov x1, #ERRATA_APPLIES
|
||||||
b cpu_rev_var_ls
|
mov x2, #ERRATA_NOT_APPLIES
|
||||||
|
cmp x0, #0x04
|
||||||
|
csel x0, x1, x2, ls
|
||||||
|
/*
|
||||||
|
* Fix potentially available for revision r0p4.
|
||||||
|
* If r0p4 check for fix in REVIDR, else exit.
|
||||||
|
*/
|
||||||
|
b.ne exit_check_errata_843419
|
||||||
|
/* Load REVIDR. */
|
||||||
|
mrs x3, revidr_el1
|
||||||
|
/* If REVIDR[8] is set (fix exists) set ERRATA_NOT_APPLIES, else exit. */
|
||||||
|
tbz x3, #8, exit_check_errata_843419
|
||||||
|
mov x0, x2
|
||||||
|
exit_check_errata_843419:
|
||||||
|
ret
|
||||||
endfunc check_errata_843419
|
endfunc check_errata_843419
|
||||||
|
|
||||||
/* -------------------------------------------------
|
/* -------------------------------------------------
|
||||||
|
|
|
@ -198,6 +198,8 @@ endfunc cpu_get_rev_var
|
||||||
* Compare the CPU's revision-variant (x0) with a given value (x1), for errata
|
* Compare the CPU's revision-variant (x0) with a given value (x1), for errata
|
||||||
* application purposes. If the revision-variant is less than or same as a given
|
* application purposes. If the revision-variant is less than or same as a given
|
||||||
* value, indicates that errata applies; otherwise not.
|
* value, indicates that errata applies; otherwise not.
|
||||||
|
*
|
||||||
|
* Shall clobber: x0-x3
|
||||||
*/
|
*/
|
||||||
.globl cpu_rev_var_ls
|
.globl cpu_rev_var_ls
|
||||||
func cpu_rev_var_ls
|
func cpu_rev_var_ls
|
||||||
|
@ -212,6 +214,8 @@ endfunc cpu_rev_var_ls
|
||||||
* Compare the CPU's revision-variant (x0) with a given value (x1), for errata
|
* Compare the CPU's revision-variant (x0) with a given value (x1), for errata
|
||||||
* application purposes. If the revision-variant is higher than or same as a
|
* application purposes. If the revision-variant is higher than or same as a
|
||||||
* given value, indicates that errata applies; otherwise not.
|
* given value, indicates that errata applies; otherwise not.
|
||||||
|
*
|
||||||
|
* Shall clobber: x0-x3
|
||||||
*/
|
*/
|
||||||
.globl cpu_rev_var_hs
|
.globl cpu_rev_var_hs
|
||||||
func cpu_rev_var_hs
|
func cpu_rev_var_hs
|
||||||
|
|
Loading…
Add table
Reference in a new issue