Commit 9ec3921c authored by Jonathan Wright's avatar Jonathan Wright
Browse files

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: default avatarJonathan Wright <jonathan.wright@arm.com>
parent aa2fcb43
...@@ -230,6 +230,7 @@ CPU_OPS_SIZE = . ...@@ -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
......
/* /*
* 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 @@ ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment