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
854ca7da
Commit
854ca7da
authored
6 years ago
by
Soby Mathew
Committed by
TrustedFirmware Code Review
6 years ago
Browse files
Options
Download
Plain Diff
Merge "Add compile-time errors for HW_ASSISTED_COHERENCY flag" into integration
parents
b9c1d185
076b5f02
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
docs/user-guide.rst
+15
-7
docs/user-guide.rst
lib/cpus/aarch64/cortex_a55.S
+5
-0
lib/cpus/aarch64/cortex_a55.S
lib/cpus/aarch64/cortex_a75.S
+5
-0
lib/cpus/aarch64/cortex_a75.S
lib/cpus/aarch64/cortex_a76.S
+5
-0
lib/cpus/aarch64/cortex_a76.S
lib/cpus/aarch64/cortex_a76ae.S
+5
-0
lib/cpus/aarch64/cortex_a76ae.S
lib/cpus/aarch64/cortex_deimos.S
+6
-1
lib/cpus/aarch64/cortex_deimos.S
lib/cpus/aarch64/neoverse_e1.S
+5
-0
lib/cpus/aarch64/neoverse_e1.S
lib/cpus/aarch64/neoverse_n1.S
+5
-0
lib/cpus/aarch64/neoverse_n1.S
lib/cpus/aarch64/neoverse_zeus.S
+5
-0
lib/cpus/aarch64/neoverse_zeus.S
plat/arm/board/fvp/platform.mk
+16
-6
plat/arm/board/fvp/platform.mk
with
72 additions
and
14 deletions
+72
-14
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
...
...
This diff is collapsed.
Click to expand it.
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
.
...
...
This diff is collapsed.
Click to expand it.
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
.
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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
*
---------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
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
*
---------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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
.
...
...
This diff is collapsed.
Click to expand it.
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
*
---------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
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)
...
...
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