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
84167417
Commit
84167417
authored
5 years ago
by
Paul Beesley
Committed by
TrustedFirmware Code Review
5 years ago
Browse files
Options
Download
Plain Diff
Merge "Cortex-A55: workarounds for errata 1221012" into integration
parents
5a408104
9af07df0
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
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/design/cpu-specific-build-macros.rst
+3
-0
docs/design/cpu-specific-build-macros.rst
include/lib/cpus/aarch64/cortex_a55.h
+6
-0
include/lib/cpus/aarch64/cortex_a55.h
lib/cpus/aarch64/cortex_a55.S
+53
-0
lib/cpus/aarch64/cortex_a55.S
lib/cpus/cpu-ops.mk
+8
-0
lib/cpus/cpu-ops.mk
with
70 additions
and
0 deletions
+70
-0
docs/design/cpu-specific-build-macros.rst
View file @
84167417
...
...
@@ -143,6 +143,9 @@ For Cortex-A55, the following errata build flags are defined :
- ``ERRATA_A55_903758``: This applies errata 903758 workaround to Cortex-A55
CPU. This needs to be enabled only for revision <= r0p1 of the CPU.
- ``ERRATA_A55_1221012``: This applies errata 1221012 workaround to Cortex-A55
CPU. This needs to be enabled only for revision <= r1p0 of the CPU.
For Cortex-A57, the following errata build flags are defined :
- ``ERRATA_A57_806969``: This applies errata 806969 workaround to Cortex-A57
...
...
This diff is collapsed.
Click to expand it.
include/lib/cpus/aarch64/cortex_a55.h
View file @
84167417
...
...
@@ -39,4 +39,10 @@
/* Definitions of register field mask in CORTEX_A55_CPUPWRCTLR_EL1 */
#define CORTEX_A55_CORE_PWRDN_EN_MASK U(0x1)
/* Instruction patching registers */
#define CPUPSELR_EL3 S3_6_C15_C8_0
#define CPUPCR_EL3 S3_6_C15_C8_1
#define CPUPOR_EL3 S3_6_C15_C8_2
#define CPUPMR_EL3 S3_6_C15_C8_3
#endif
/* CORTEX_A55_H */
This diff is collapsed.
Click to expand it.
lib/cpus/aarch64/cortex_a55.S
View file @
84167417
...
...
@@ -175,6 +175,53 @@ func check_errata_903758
b
cpu_rev_var_ls
endfunc
check_errata_903758
/
*
-----------------------------------------------------
*
Errata
Workaround
for
Cortex
A55
Errata
#
1221012
.
*
This
applies
only
to
revisions
<=
r1p0
of
Cortex
A55
.
*
Inputs
:
*
x0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
Shall
clobber
:
x0
-
x17
*
-----------------------------------------------------
*/
func
errata_a55_1221012_wa
/
*
*
Compare
x0
against
revision
r1p0
*/
mov
x17
,
x30
bl
check_errata_1221012
cbz
x0
,
1
f
mov
x0
,
#
0x0020
movk
x0
,
#
0x0850
,
lsl
#
16
msr
CPUPOR_EL3
,
x0
mov
x0
,
#
0x0000
movk
x0
,
#
0x1FF0
,
lsl
#
16
movk
x0
,
#
0x2
,
lsl
#
32
msr
CPUPMR_EL3
,
x0
mov
x0
,
#
0x03fd
movk
x0
,
#
0x0110
,
lsl
#
16
msr
CPUPCR_EL3
,
x0
mov
x0
,
#
0x1
msr
CPUPSELR_EL3
,
x0
mov
x0
,
#
0x0040
movk
x0
,
#
0x08D0
,
lsl
#
16
msr
CPUPOR_EL3
,
x0
mov
x0
,
#
0x0040
movk
x0
,
#
0x1FF0
,
lsl
#
16
movk
x0
,
#
0x2
,
lsl
#
32
msr
CPUPMR_EL3
,
x0
mov
x0
,
#
0x03fd
movk
x0
,
#
0x0110
,
lsl
#
16
msr
CPUPCR_EL3
,
x0
isb
1
:
ret
x17
endfunc
errata_a55_1221012_wa
func
check_errata_1221012
mov
x1
,
#
0x10
b
cpu_rev_var_ls
endfunc
check_errata_1221012
func
cortex_a55_reset_func
mov
x19
,
x30
...
...
@@ -214,6 +261,11 @@ func cortex_a55_reset_func
bl
errata_a55_903758_wa
#endif
#if ERRATA_A55_1221012
mov
x0
,
x18
bl
errata_a55_1221012_wa
#endif
ret
x19
endfunc
cortex_a55_reset_func
...
...
@@ -253,6 +305,7 @@ func cortex_a55_errata_report
report_errata
ERRATA_A55_798797
,
cortex_a55
,
798797
report_errata
ERRATA_A55_846532
,
cortex_a55
,
846532
report_errata
ERRATA_A55_903758
,
cortex_a55
,
903758
report_errata
ERRATA_A55_1221012
,
cortex_a55
,
1221012
ldp
x8
,
x30
,
[
sp
],
#
16
ret
...
...
This diff is collapsed.
Click to expand it.
lib/cpus/cpu-ops.mk
View file @
84167417
...
...
@@ -134,6 +134,10 @@ ERRATA_A55_846532 ?=0
# only to revision <= r0p1 of the Cortex A55 cpu.
ERRATA_A55_903758
?=
0
# Flag to apply erratum 1221012 workaround during reset. This erratum applies
# only to revision <= r1p0 of the Cortex A55 cpu.
ERRATA_A55_1221012
?=
0
# Flag to apply erratum 806969 workaround during reset. This erratum applies
# only to revision r0p0 of the Cortex A57 cpu.
ERRATA_A57_806969
?=
0
...
...
@@ -319,6 +323,10 @@ $(eval $(call add_define,ERRATA_A55_846532))
$(eval
$(call
assert_boolean,ERRATA_A55_903758))
$(eval
$(call
add_define,ERRATA_A55_903758))
# Process ERRATA_A55_1221012 flag
$(eval
$(call
assert_boolean,ERRATA_A55_1221012))
$(eval
$(call
add_define,ERRATA_A55_1221012))
# Process ERRATA_A57_806969 flag
$(eval
$(call
assert_boolean,ERRATA_A57_806969))
$(eval
$(call
add_define,ERRATA_A57_806969))
...
...
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