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
04fb777f
Commit
04fb777f
authored
Aug 16, 2019
by
Paul Beesley
Committed by
TrustedFirmware Code Review
Aug 16, 2019
Browse files
Merge "FVP_Base_AEMv8A platform: Fix cache maintenance operations" into integration
parents
300df53b
ef430ff4
Changes
2
Show whitespace changes
Inline
Side-by-side
include/arch/aarch64/arch.h
View file @
04fb777f
...
@@ -112,6 +112,7 @@
...
@@ -112,6 +112,7 @@
/* CLIDR definitions */
/* CLIDR definitions */
#define LOUIS_SHIFT U(21)
#define LOUIS_SHIFT U(21)
#define LOC_SHIFT U(24)
#define LOC_SHIFT U(24)
#define CTYPE_SHIFT(n) U(3 * (n - 1))
#define CLIDR_FIELD_WIDTH U(3)
#define CLIDR_FIELD_WIDTH U(3)
/* CSSELR definitions */
/* CSSELR definitions */
...
...
lib/cpus/aarch64/aem_generic.S
View file @
04fb777f
/*
/*
*
Copyright
(
c
)
2014
-
201
5
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
Copyright
(
c
)
2014
-
201
9
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
*/
...
@@ -18,15 +18,43 @@ func aem_generic_core_pwr_dwn
...
@@ -18,15 +18,43 @@ func aem_generic_core_pwr_dwn
msr
sctlr_el3
,
x1
msr
sctlr_el3
,
x1
isb
isb
/
*
---------------------------------------------
*
AEM
model
supports
L3
caches
in
which
case
L2
*
will
be
private
per
core
caches
and
flush
*
from
L1
to
L2
is
not
sufficient
.
*
---------------------------------------------
*/
mrs
x1
,
clidr_el1
/
*
---------------------------------------------
*
Check
if
L3
cache
is
implemented
.
*
---------------------------------------------
*/
tst
x1
,
((
1
<<
CLIDR_FIELD_WIDTH
)
-
1
)
<<
CTYPE_SHIFT
(
3
)
/
*
---------------------------------------------
*
There
is
no
L3
cache
,
flush
L1
to
L2
only
.
*
---------------------------------------------
*/
mov
x0
,
#
DCCISW
mov
x0
,
#
DCCISW
b.eq
dcsw_op_level1
mov
x18
,
x30
/
*
---------------------------------------------
/
*
---------------------------------------------
*
Flush
L1
cache
to
PoU
.
*
Flush
L1
cache
to
L2
.
*
---------------------------------------------
*
---------------------------------------------
*/
*/
b
dcsw_op_l
ouis
b
l
dcsw_op_l
evel1
endfunc
aem_generic_core_pwr_dwn
mov
x30
,
x18
/
*
---------------------------------------------
*
Flush
L2
cache
to
L3
.
*
---------------------------------------------
*/
mov
x0
,
#
DCCISW
b
dcsw_op_level2
endfunc
aem_generic_core_pwr_dwn
func
aem_generic_cluster_pwr_dwn
func
aem_generic_cluster_pwr_dwn
/
*
---------------------------------------------
/
*
---------------------------------------------
...
@@ -39,7 +67,7 @@ func aem_generic_cluster_pwr_dwn
...
@@ -39,7 +67,7 @@ func aem_generic_cluster_pwr_dwn
isb
isb
/
*
---------------------------------------------
/
*
---------------------------------------------
*
Flush
L1
and
L2
caches
to
PoC
.
*
Flush
all
caches
to
PoC
.
*
---------------------------------------------
*
---------------------------------------------
*/
*/
mov
x0
,
#
DCCISW
mov
x0
,
#
DCCISW
...
...
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