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
0d182a0b
Commit
0d182a0b
authored
Jun 28, 2017
by
danh-arm
Committed by
GitHub
Jun 28, 2017
Browse files
Merge pull request #1002 from douglas-raillard-arm/dr/fix_errata_a53
Apply workarounds for A53 Cat A Errata 835769 and 843419
parents
267d4bf9
a94cc374
Changes
4
Hide whitespace changes
Inline
Side-by-side
Makefile
View file @
0d182a0b
...
...
@@ -151,6 +151,7 @@ TF_CFLAGS += $(CPPFLAGS) $(TF_CFLAGS_$(ARCH)) \
-ffreestanding
-fno-builtin
-Wall
-std
=
gnu99
\
-Os
-ffunction-sections
-fdata-sections
LDFLAGS
+=
$
(
LDFLAGS_
$(ARCH)
)
LDFLAGS
+=
--fatal-warnings
-O1
LDFLAGS
+=
--gc-sections
...
...
lib/cpus/aarch64/cortex_a53.S
View file @
0d182a0b
...
...
@@ -138,6 +138,26 @@ func check_errata_855873
b
cpu_rev_var_hs
endfunc
check_errata_855873
/*
*
Errata
workaround
for
Cortex
A53
Errata
#
835769
.
*
This
applies
to
revisions
<=
r0p4
of
Cortex
A53
.
*
This
workaround
is
statically
enabled
at
build
time
.
*/
func
check_errata_835769
mov
x1
,
#
0x04
b
cpu_rev_var_ls
endfunc
check_errata_835769
/*
*
Errata
workaround
for
Cortex
A53
Errata
#
843419
.
*
This
applies
to
revisions
<=
r0p4
of
Cortex
A53
.
*
This
workaround
is
statically
enabled
at
build
time
.
*/
func
check_errata_843419
mov
x1
,
#
0x04
b
cpu_rev_var_ls
endfunc
check_errata_843419
/
*
-------------------------------------------------
*
The
CPU
Ops
reset
function
for
Cortex
-
A53
.
*
Shall
clobber
:
x0
-
x19
...
...
@@ -251,7 +271,9 @@ func cortex_a53_errata_report
*
checking
functions
of
each
errata
.
*/
report_errata
ERRATA_A53_826319
,
cortex_a53
,
826319
report_errata
ERRATA_A53_835769
,
cortex_a53
,
835769
report_errata
ERRATA_A53_836870
,
cortex_a53
,
disable_non_temporal_hint
report_errata
ERRATA_A53_843419
,
cortex_a53
,
843419
report_errata
ERRATA_A53_855873
,
cortex_a53
,
855873
ldp
x8
,
x30
,
[
sp
],
#
16
...
...
lib/cpus/cpu-ops.mk
View file @
0d182a0b
#
# Copyright (c) 2014-201
6
, ARM Limited and Contributors. All rights reserved.
# Copyright (c) 2014-201
7
, ARM Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
...
...
@@ -37,11 +37,22 @@ $(eval $(call add_define,A57_DISABLE_NON_TEMPORAL_HINT))
# only to revision <= r0p2 of the Cortex A53 cpu.
ERRATA_A53_826319
?=
0
# Flag to apply erratum 835769 workaround at compile and link time. This
# erratum applies to revision <= r0p4 of the Cortex A53 cpu. Enabling this
# workaround can lead the linker to create "*.stub" sections.
ERRATA_A53_835769
?=
0
# Flag to apply erratum 836870 workaround during reset. This erratum applies
# only to revision <= r0p3 of the Cortex A53 cpu. From r0p4 and onwards, this
# erratum workaround is enabled by default in hardware.
ERRATA_A53_836870
?=
0
# Flag to apply erratum 843419 workaround at link time.
# This erratum applies to revision <= r0p4 of the Cortex A53 cpu. Enabling this
# workaround could lead the linker to emit "*.stub" sections which are 4kB
# aligned.
ERRATA_A53_843419
?=
0
# Flag to apply errata 855873 during reset. This errata applies to all
# revisions of the Cortex A53 CPU, but this firmware workaround only works
# for revisions r0p3 and higher. Earlier revisions are taken care
...
...
@@ -84,10 +95,18 @@ ERRATA_A57_833471 ?=0
$(eval
$(call
assert_boolean,ERRATA_A53_826319))
$(eval
$(call
add_define,ERRATA_A53_826319))
# Process ERRATA_A53_835769 flag
$(eval
$(call
assert_boolean,ERRATA_A53_835769))
$(eval
$(call
add_define,ERRATA_A53_835769))
# Process ERRATA_A53_836870 flag
$(eval
$(call
assert_boolean,ERRATA_A53_836870))
$(eval
$(call
add_define,ERRATA_A53_836870))
# Process ERRATA_A53_843419 flag
$(eval
$(call
assert_boolean,ERRATA_A53_843419))
$(eval
$(call
add_define,ERRATA_A53_843419))
# Process ERRATA_A53_855873 flag
$(eval
$(call
assert_boolean,ERRATA_A53_855873))
$(eval
$(call
add_define,ERRATA_A53_855873))
...
...
@@ -123,3 +142,13 @@ $(eval $(call add_define,ERRATA_A57_829520))
# Process ERRATA_A57_833471 flag
$(eval
$(call
assert_boolean,ERRATA_A57_833471))
$(eval
$(call
add_define,ERRATA_A57_833471))
# Errata build flags
ifneq
(${ERRATA_A53_843419},0)
LDFLAGS_aarch64
+=
--fix-cortex-a53-843419
endif
ifneq
(${ERRATA_A53_835769},0)
TF_CFLAGS_aarch64
+=
-mfix-cortex-a53-835769
LDFLAGS_aarch64
+=
--fix-cortex-a53-835769
endif
plat/arm/board/juno/platform.mk
View file @
0d182a0b
...
...
@@ -56,6 +56,8 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a53.S \
endif
# Enable workarounds for selected Cortex-A53 and A57 errata.
ERRATA_A53_835769
:=
1
ERRATA_A53_843419
:=
1
ERRATA_A53_855873
:=
1
ERRATA_A57_806969
:=
0
ERRATA_A57_813419
:=
1
...
...
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