mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 13:55:56 +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 */
|
||||
mov x0, \_rev_var
|
||||
/* Shall clobber: x0-x7 */
|
||||
bl check_errata_\_id
|
||||
|
||||
.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
|
||||
*/
|
||||
|
@ -9,6 +9,7 @@
|
|||
#include <cortex_a53.h>
|
||||
#include <cpu_macros.S>
|
||||
#include <debug.h>
|
||||
#include <errata_report.h>
|
||||
#include <plat_macros.S>
|
||||
|
||||
#if A53_DISABLE_NON_TEMPORAL_HINT
|
||||
|
@ -154,8 +155,22 @@ endfunc check_errata_835769
|
|||
* This workaround is statically enabled at build time.
|
||||
*/
|
||||
func check_errata_843419
|
||||
mov x1, #0x04
|
||||
b cpu_rev_var_ls
|
||||
mov x1, #ERRATA_APPLIES
|
||||
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
|
||||
|
||||
/* -------------------------------------------------
|
||||
|
|
|
@ -198,6 +198,8 @@ endfunc cpu_get_rev_var
|
|||
* 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
|
||||
* value, indicates that errata applies; otherwise not.
|
||||
*
|
||||
* Shall clobber: x0-x3
|
||||
*/
|
||||
.globl 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
|
||||
* application purposes. If the revision-variant is higher than or same as a
|
||||
* given value, indicates that errata applies; otherwise not.
|
||||
*
|
||||
* Shall clobber: x0-x3
|
||||
*/
|
||||
.globl cpu_rev_var_hs
|
||||
func cpu_rev_var_hs
|
||||
|
|
Loading…
Add table
Reference in a new issue