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
854ca7da
Commit
854ca7da
authored
May 03, 2019
by
Soby Mathew
Committed by
TrustedFirmware Code Review
May 03, 2019
Browse files
Merge "Add compile-time errors for HW_ASSISTED_COHERENCY flag" into integration
parents
b9c1d185
076b5f02
Changes
10
Hide whitespace changes
Inline
Side-by-side
docs/user-guide.rst
View file @
854ca7da
...
...
@@ -534,13 +534,21 @@ Common build options
- ``HW_ASSISTED_COHERENCY``: On most Arm systems to-date, platform-specific
software operations are required for CPUs to enter and exit coherency.
However, there exists newer systems where CPUs'
entry
to
and
exit
from
coherency
is
managed
in
hardware
.
Such
systems
require
software
to
only
initiate
the
operations
,
and
the
rest
is
managed
in
hardware
,
minimizing
active
software
management
.
In
such
systems
,
this
boolean
option
enables
TF
-
A
to
carry
out
build
and
run
-
time
optimizations
during
boot
and
power
management
operations
.
This
option
defaults
to
0
and
if
it
is
enabled
,
then
it
implies
``
WARMBOOT_ENABLE_DCACHE_EARLY
``
is
also
enabled
.
However, newer systems exist where CPUs'
entry
to
and
exit
from
coherency
is
managed
in
hardware
.
Such
systems
require
software
to
only
initiate
these
operations
,
and
the
rest
is
managed
in
hardware
,
minimizing
active
software
management
.
In
such
systems
,
this
boolean
option
enables
TF
-
A
to
carry
out
build
and
run
-
time
optimizations
during
boot
and
power
management
operations
.
This
option
defaults
to
0
and
if
it
is
enabled
,
then
it
implies
``
WARMBOOT_ENABLE_DCACHE_EARLY
``
is
also
enabled
.
If
this
flag
is
disabled
while
the
platform
which
TF
-
A
is
compiled
for
includes
cores
that
manage
coherency
in
hardware
,
then
a
compilation
error
is
generated
.
This
is
based
on
the
fact
that
a
system
cannot
have
,
at
the
same
time
,
cores
that
manage
coherency
in
hardware
and
cores
that
don
't. In other
words, a platform cannot have, at the same time, cores that require
``HW_ASSISTED_COHERENCY=1`` and cores that require
``HW_ASSISTED_COHERENCY=0``.
Note that, when ``HW_ASSISTED_COHERENCY`` is enabled, version 2 of
translation library (xlat tables v2) must be used; version 1 of translation
...
...
lib/cpus/aarch64/cortex_a55.S
View file @
854ca7da
...
...
@@ -11,6 +11,11 @@
#include <cpu_macros.S>
#include <plat_macros.S>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Cortex-A55 must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
/
*
--------------------------------------------------
*
Errata
Workaround
for
Cortex
A55
Errata
#
768277
.
*
This
applies
only
to
revision
r0p0
of
Cortex
A55
.
...
...
lib/cpus/aarch64/cortex_a75.S
View file @
854ca7da
...
...
@@ -10,6 +10,11 @@
#include <cpuamu.h>
#include <cpu_macros.S>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Cortex-A75 must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
/
*
--------------------------------------------------
*
Errata
Workaround
for
Cortex
A75
Errata
#
764081
.
*
This
applies
only
to
revision
r0p0
of
Cortex
A75
.
...
...
lib/cpus/aarch64/cortex_a76.S
View file @
854ca7da
...
...
@@ -13,6 +13,11 @@
#include <plat_macros.S>
#include <services/arm_arch_svc.h>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Cortex-A76 must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
#define ESR_EL3_A64_SMC0 0x5e000000
#define ESR_EL3_A32_SMC0 0x4e000000
...
...
lib/cpus/aarch64/cortex_a76ae.S
View file @
854ca7da
...
...
@@ -8,6 +8,11 @@
#include <cortex_a76ae.h>
#include <cpu_macros.S>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Cortex-A76AE must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
/
*
---------------------------------------------
*
HW
will
do
the
cache
maintenance
while
powering
down
*
---------------------------------------------
...
...
lib/cpus/aarch64/cortex_deimos.S
View file @
854ca7da
/*
*
Copyright
(
c
)
2018
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
Copyright
(
c
)
2018
-
2019
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
...
...
@@ -11,6 +11,11 @@
#include <cpu_macros.S>
#include <plat_macros.S>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Deimos must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
/
*
---------------------------------------------
*
HW
will
do
the
cache
maintenance
while
powering
down
*
---------------------------------------------
...
...
lib/cpus/aarch64/neoverse_e1.S
View file @
854ca7da
...
...
@@ -11,6 +11,11 @@
#include <cpu_macros.S>
#include <plat_macros.S>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Neoverse E1 must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
func
neoverse_e1_cpu_pwr_dwn
mrs
x0
,
NEOVERSE_E1_CPUPWRCTLR_EL1
orr
x0
,
x0
,
#
NEOVERSE_E1_CPUPWRCTLR_EL1_CORE_PWRDN_BIT
...
...
lib/cpus/aarch64/neoverse_n1.S
View file @
854ca7da
...
...
@@ -10,6 +10,11 @@
#include <cpuamu.h>
#include <cpu_macros.S>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Neoverse N1 must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
/*
--------------------------------------------------
*
Errata
Workaround
for
Neoverse
N1
Errata
*
This
applies
to
revision
r0p0
and
r1p0
of
Neoverse
N1
.
...
...
lib/cpus/aarch64/neoverse_zeus.S
View file @
854ca7da
...
...
@@ -11,6 +11,11 @@
#include <cpu_macros.S>
#include <plat_macros.S>
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#error "Neoverse Zeus must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
/
*
---------------------------------------------
*
HW
will
do
the
cache
maintenance
while
powering
down
*
---------------------------------------------
...
...
plat/arm/board/fvp/platform.mk
View file @
854ca7da
...
...
@@ -95,18 +95,25 @@ PLAT_BL_COMMON_SOURCES := plat/arm/board/fvp/fvp_common.c
FVP_CPU_LIBS
:=
lib/cpus/
${ARCH}
/aem_generic.S
ifeq
(${ARCH}, aarch64)
FVP_CPU_LIBS
+=
lib/cpus/aarch64/cortex_a35.S
\
# select a different set of CPU files, depending on whether we compile with
# hardware assisted coherency configurations or not
ifeq
(${HW_ASSISTED_COHERENCY}, 0)
FVP_CPU_LIBS
+=
lib/cpus/aarch64/cortex_a35.S
\
lib/cpus/aarch64/cortex_a53.S
\
lib/cpus/aarch64/cortex_a55.S
\
lib/cpus/aarch64/cortex_a57.S
\
lib/cpus/aarch64/cortex_a72.S
\
lib/cpus/aarch64/cortex_a73.S
\
lib/cpus/aarch64/cortex_a73.S
else
FVP_CPU_LIBS
+=
lib/cpus/aarch64/cortex_a55.S
\
lib/cpus/aarch64/cortex_a75.S
\
lib/cpus/aarch64/cortex_a76.S
\
lib/cpus/aarch64/cortex_a76ae.S
\
lib/cpus/aarch64/neoverse_n1.S
\
lib/cpus/aarch64/neoverse_e1.S
\
lib/cpus/aarch64/cortex_deimos.S
\
lib/cpus/aarch64/neoverse_zeus.S
endif
else
FVP_CPU_LIBS
+=
lib/cpus/aarch32/cortex_a32.S
...
...
@@ -217,10 +224,13 @@ ENABLE_PIE := 1
endif
ifeq
(${ENABLE_AMU},1)
BL31_SOURCES
+=
lib/cpus/aarch64/cortex_a75_pubsub.c
\
lib/cpus/aarch64/neoverse_n1_pubsub.c
\
lib/cpus/aarch64/cpuamu.c
\
BL31_SOURCES
+=
lib/cpus/aarch64/cpuamu.c
\
lib/cpus/aarch64/cpuamu_helpers.S
ifeq
(${HW_ASSISTED_COHERENCY}, 1)
BL31_SOURCES
+=
lib/cpus/aarch64/cortex_a75_pubsub.c
\
lib/cpus/aarch64/neoverse_n1_pubsub.c
endif
endif
ifeq
(${RAS_EXTENSION},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