Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
f998d15a
Commit
f998d15a
authored
Jun 25, 2020
by
Lauren Wehrmeister
Committed by
TrustedFirmware Code Review
Jun 25, 2020
Browse files
Merge "Workaround for Cortex A77 erratum 1800714" into integration
parents
c275ea18
62bbfe82
Changes
4
Hide whitespace changes
Inline
Side-by-side
docs/design/cpu-specific-build-macros.rst
View file @
f998d15a
...
...
@@ -233,6 +233,11 @@ For Cortex-A76, the following errata build flags are defined :
- ``ERRATA_A76_1800710``: This applies errata 1800710 workaround to Cortex-A76
CPU. This needs to be enabled only for revision <= r4p0 of the CPU.
For Cortex-A77, the following errata build flags are defined :
- ``ERRATA_A77_1800714``: This applies errata 1800714 workaround to Cortex-A77
CPU. This needs to be enabled only for revision <= r1p1 of the CPU.
For Cortex-A78, the following errata build flags are defined :
- ``ERRATA_A78_1688305``: This applies errata 1688305 workaround to Cortex-A78
...
...
include/lib/cpus/aarch64/cortex_a77.h
View file @
f998d15a
/*
* Copyright (c) 2018-20
19
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2018-20
20
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -16,6 +16,7 @@
* CPU Extended Control register specific definitions.
******************************************************************************/
#define CORTEX_A77_CPUECTLR_EL1 S3_0_C15_C1_4
#define CORTEX_A77_CPUECTLR_EL1_BIT_53 (ULL(1) << 53)
/*******************************************************************************
* CPU Power Control register specific definitions.
...
...
lib/cpus/aarch64/cortex_a77.S
View file @
f998d15a
/*
*
Copyright
(
c
)
2018
-
20
19
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
Copyright
(
c
)
2018
-
20
20
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
...
...
@@ -21,6 +21,53 @@
#error "Cortex-A77 supports only AArch64. Compile with CTX_INCLUDE_AARCH32_REGS=0"
#endif
/
*
--------------------------------------------------
*
Errata
Workaround
for
Cortex
A77
Errata
#
1800714
.
*
This
applies
to
revision
<=
r1p1
of
Cortex
A77
.
*
Inputs
:
*
x0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
Shall
clobber
:
x0
-
x17
*
--------------------------------------------------
*/
func
errata_a77_1800714_wa
/
*
Compare
x0
against
revision
<=
r1p1
*/
mov
x17
,
x30
bl
check_errata_1800714
cbz
x0
,
1
f
/
*
Disable
allocation
of
splintered
pages
in
the
L2
TLB
*/
mrs
x1
,
CORTEX_A77_CPUECTLR_EL1
orr
x1
,
x1
,
CORTEX_A77_CPUECTLR_EL1_BIT_53
msr
CORTEX_A77_CPUECTLR_EL1
,
x1
isb
1
:
ret
x17
endfunc
errata_a77_1800714_wa
func
check_errata_1800714
/
*
Applies
to
everything
<=
r1p1
*/
mov
x1
,
#
0x11
b
cpu_rev_var_ls
endfunc
check_errata_1800714
/
*
-------------------------------------------------
*
The
CPU
Ops
reset
function
for
Cortex
-
A77
.
*
Shall
clobber
:
x0
-
x19
*
-------------------------------------------------
*/
func
cortex_a77_reset_func
mov
x19
,
x30
bl
cpu_get_rev_var
mov
x18
,
x0
#if ERRATA_A77_1800714
mov
x0
,
x18
bl
errata_a77_1800714_wa
#endif
ret
x19
endfunc
cortex_a77_reset_func
/
*
---------------------------------------------
*
HW
will
do
the
cache
maintenance
while
powering
down
*
---------------------------------------------
...
...
@@ -42,6 +89,18 @@ endfunc cortex_a77_core_pwr_dwn
*
Errata
printing
function
for
Cortex
-
A77
.
Must
follow
AAPCS
.
*/
func
cortex_a77_errata_report
stp
x8
,
x30
,
[
sp
,
#-
16
]!
bl
cpu_get_rev_var
mov
x8
,
x0
/
*
*
Report
all
errata
.
The
revision
-
variant
information
is
passed
to
*
checking
functions
of
each
errata
.
*/
report_errata
ERRATA_A77_1800714
,
cortex_a77
,
1800714
ldp
x8
,
x30
,
[
sp
],
#
16
ret
endfunc
cortex_a77_errata_report
#endif
...
...
@@ -67,5 +126,5 @@ func cortex_a77_cpu_reg_dump
endfunc
cortex_a77_cpu_reg_dump
declare_cpu_ops
cortex_a77
,
CORTEX_A77_MIDR
,
\
CPU_NO_RESET_FUNC
,
\
cortex_a77_reset_func
,
\
cortex_a77_core_pwr_dwn
lib/cpus/cpu-ops.mk
View file @
f998d15a
...
...
@@ -258,6 +258,10 @@ ERRATA_A76_1791580 ?=0
# only to revision <= r4p0 of the Cortex A76 cpu.
ERRATA_A76_1800710
?=
0
# Flag to apply erratum 1800714 workaround during reset. This erratum applies
# only to revision <= r1p1 of the Cortex A77 cpu.
ERRATA_A77_1800714
?=
0
# Flag to apply erratum 1688305 workaround during reset. This erratum applies
# to revisions r0p0 - r1p0 of the A78 cpu.
ERRATA_A78_1688305
?=
0
...
...
@@ -503,6 +507,10 @@ $(eval $(call add_define,ERRATA_A76_1791580))
$(eval
$(call
assert_boolean,ERRATA_A76_1800710))
$(eval
$(call
add_define,ERRATA_A76_1800710))
# Process ERRATA_A77_1800714 flag
$(eval
$(call
assert_boolean,ERRATA_A77_1800714))
$(eval
$(call
add_define,ERRATA_A77_1800714))
# Process ERRATA_A78_1688305 flag
$(eval
$(call
assert_boolean,ERRATA_A78_1688305))
$(eval
$(call
add_define,ERRATA_A78_1688305))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment