Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
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
620d9832
Unverified
Commit
620d9832
authored
6 years ago
by
Soby Mathew
Committed by
GitHub
6 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1883 from ambroise-arm/av/a17-errata
Apply workarounds for errata of Cortex-A17
parents
ab15922e
be10dcde
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
v2.3
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.2
v2.2-rc2
v2.2-rc1
v2.2-rc0
v2.1
v2.1-rc1
v2.1-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
docs/cpu-specific-build-macros.rst
+8
-0
docs/cpu-specific-build-macros.rst
include/lib/cpus/aarch32/cortex_a17.h
+5
-0
include/lib/cpus/aarch32/cortex_a17.h
lib/cpus/aarch32/cortex_a17.S
+75
-1
lib/cpus/aarch32/cortex_a17.S
lib/cpus/cpu-ops.mk
+16
-0
lib/cpus/cpu-ops.mk
with
104 additions
and
1 deletion
+104
-1
docs/cpu-specific-build-macros.rst
View file @
620d9832
...
...
@@ -79,6 +79,14 @@ For Cortex-A15, the following errata build flags are defined :
- ``ERRATA_A15_827671``: This applies errata 827671 workaround to Cortex-A15
CPU. This needs to be enabled only for revision >= r3p0 of the CPU.
For Cortex-A17, the following errata build flags are defined :
- ``ERRATA_A17_852421``: This applies errata 852421 workaround to Cortex-A17
CPU. This needs to be enabled only for revision <= r1p2 of the CPU.
- ``ERRATA_A17_852423``: This applies errata 852423 workaround to Cortex-A17
CPU. This needs to be enabled only for revision <= r1p2 of the CPU.
For Cortex-A53, the following errata build flags are defined :
- ``ERRATA_A53_819472``: This applies errata 819472 workaround to all
...
...
This diff is collapsed.
Click to expand it.
include/lib/cpus/aarch32/cortex_a17.h
View file @
620d9832
...
...
@@ -19,4 +19,9 @@
******************************************************************************/
#define CORTEX_A17_ACTLR_SMP_BIT (U(1) << 6)
/*******************************************************************************
* Implementation defined register specific definitions.
******************************************************************************/
#define CORTEX_A17_IMP_DEF_REG1 p15, 0, c15, c0, 1
#endif
/* CORTEX_A17_H */
This diff is collapsed.
Click to expand it.
lib/cpus/aarch32/cortex_a17.S
View file @
620d9832
/*
*
Copyright
(
c
)
2017
-
201
8
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
Copyright
(
c
)
2017
-
201
9
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
...
...
@@ -35,6 +35,62 @@ func cortex_a17_enable_smp
bx
lr
endfunc
cortex_a17_enable_smp
/
*
----------------------------------------------------
*
Errata
Workaround
for
Cortex
A17
Errata
#
852421
.
*
This
applies
only
to
revision
<=
r1p2
of
Cortex
A17
.
*
Inputs
:
*
r0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
Shall
clobber
:
r0
-
r3
*
----------------------------------------------------
*/
func
errata_a17_852421_wa
/
*
*
Compare
r0
against
revision
r1p2
*/
mov
r2
,
lr
bl
check_errata_852421
cmp
r0
,
#
ERRATA_NOT_APPLIES
beq
1
f
ldcopr
r0
,
CORTEX_A17_IMP_DEF_REG1
orr
r0
,
r0
,
#(
1
<<
24
)
stcopr
r0
,
CORTEX_A17_IMP_DEF_REG1
1
:
bx
r2
endfunc
errata_a17_852421_wa
func
check_errata_852421
mov
r1
,
#
0x12
b
cpu_rev_var_ls
endfunc
check_errata_852421
/
*
----------------------------------------------------
*
Errata
Workaround
for
Cortex
A17
Errata
#
852423
.
*
This
applies
only
to
revision
<=
r1p2
of
Cortex
A17
.
*
Inputs
:
*
r0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
Shall
clobber
:
r0
-
r3
*
----------------------------------------------------
*/
func
errata_a17_852423_wa
/
*
*
Compare
r0
against
revision
r1p2
*/
mov
r2
,
lr
bl
check_errata_852423
cmp
r0
,
#
ERRATA_NOT_APPLIES
beq
1
f
ldcopr
r0
,
CORTEX_A17_IMP_DEF_REG1
orr
r0
,
r0
,
#(
1
<<
12
)
stcopr
r0
,
CORTEX_A17_IMP_DEF_REG1
1
:
bx
r2
endfunc
errata_a17_852423_wa
func
check_errata_852423
mov
r1
,
#
0x12
b
cpu_rev_var_ls
endfunc
check_errata_852423
func
check_errata_cve_2017_5715
#if WORKAROUND_CVE_2017_5715
mov
r0
,
#
ERRATA_APPLIES
...
...
@@ -58,6 +114,8 @@ func cortex_a17_errata_report
*
Report
all
errata
.
The
revision
-
variant
information
is
passed
to
*
checking
functions
of
each
errata
.
*/
report_errata
ERRATA_A17_852421
,
cortex_a17
,
852421
report_errata
ERRATA_A17_852423
,
cortex_a17
,
852423
report_errata
WORKAROUND_CVE_2017_5715
,
cortex_a17
,
cve_2017_5715
pop
{
r12
,
lr
}
...
...
@@ -66,12 +124,28 @@ endfunc cortex_a17_errata_report
#endif
func
cortex_a17_reset_func
mov
r5
,
lr
bl
cpu_get_rev_var
mov
r4
,
r0
#if ERRATA_A17_852421
mov
r0
,
r4
bl
errata_a17_852421_wa
#endif
#if ERRATA_A17_852423
mov
r0
,
r4
bl
errata_a17_852423_wa
#endif
#if IMAGE_BL32 && WORKAROUND_CVE_2017_5715
ldr
r0
,
=
workaround_bpiall_runtime_exceptions
stcopr
r0
,
VBAR
stcopr
r0
,
MVBAR
/
*
isb
will
be
applied
in
the
course
of
the
reset
func
*/
#endif
mov
lr
,
r5
b
cortex_a17_enable_smp
endfunc
cortex_a17_reset_func
...
...
This diff is collapsed.
Click to expand it.
lib/cpus/cpu-ops.mk
View file @
620d9832
...
...
@@ -61,6 +61,14 @@ ERRATA_A15_816470 ?=0
# only to revision >= r3p0 of the Cortex A15 cpu.
ERRATA_A15_827671
?=
0
# Flag to apply erratum 852421 workaround during reset. This erratum applies
# only to revision <= r1p2 of the Cortex A17 cpu.
ERRATA_A17_852421
?=
0
# Flag to apply erratum 852423 workaround during reset. This erratum applies
# only to revision <= r1p2 of the Cortex A17 cpu.
ERRATA_A17_852423
?=
0
# Flag to apply erratum 819472 workaround during reset. This erratum applies
# only to revision <= r0p1 of the Cortex A53 cpu.
ERRATA_A53_819472
?=
0
...
...
@@ -212,6 +220,14 @@ $(eval $(call add_define,ERRATA_A15_816470))
$(eval
$(call
assert_boolean,ERRATA_A15_827671))
$(eval
$(call
add_define,ERRATA_A15_827671))
# Process ERRATA_A17_852421 flag
$(eval
$(call
assert_boolean,ERRATA_A17_852421))
$(eval
$(call
add_define,ERRATA_A17_852421))
# Process ERRATA_A17_852423 flag
$(eval
$(call
assert_boolean,ERRATA_A17_852423))
$(eval
$(call
add_define,ERRATA_A17_852423))
# Process ERRATA_A53_819472 flag
$(eval
$(call
assert_boolean,ERRATA_A53_819472))
$(eval
$(call
add_define,ERRATA_A53_819472))
...
...
This diff is collapsed.
Click to expand it.
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
Menu
Projects
Groups
Snippets
Help