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
23751114
"p2p/vscode:/vscode.git/clone" did not exist on "232864175dea83b375770cf275fb29f4e3b7d641"
Commit
23751114
authored
Jun 03, 2020
by
Madhukar Pappireddy
Committed by
TrustedFirmware Code Review
Jun 03, 2020
Browse files
Merge "Rename Cortex-Hercules to Cortex-A78" into integration
parents
578d2e9d
3f35709c
Changes
5
Hide whitespace changes
Inline
Side-by-side
docs/design/cpu-specific-build-macros.rst
View file @
23751114
...
@@ -227,11 +227,10 @@ For Cortex-A76, the following errata build flags are defined :
...
@@ -227,11 +227,10 @@ For Cortex-A76, the following errata build flags are defined :
- ``ERRATA_A76_1275112``: This applies errata 1275112 workaround to Cortex-A76
- ``ERRATA_A76_1275112``: This applies errata 1275112 workaround to Cortex-A76
CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
For
Hercules
, the following errata build flags are defined :
For
Cortex-A78
, the following errata build flags are defined :
- ``ERRATA_HERCULES_1688305``: This applies errata 1688305 workaround to
- ``ERRATA_A78_1688305``: This applies errata 1688305 workaround to Cortex-A78
Hercules CPU. This needs to be enabled only for revision r0p0 - r1p0 of
CPU. This needs to be enabled only for revision r0p0 - r1p0 of the CPU.
the CPU.
For Neoverse N1, the following errata build flags are defined :
For Neoverse N1, the following errata build flags are defined :
...
@@ -338,7 +337,7 @@ architecture that can be enabled by the platform as desired.
...
@@ -338,7 +337,7 @@ architecture that can be enabled by the platform as desired.
--------------
--------------
*Copyright (c) 2014-20
19
, Arm Limited and Contributors. All rights reserved.*
*Copyright (c) 2014-20
20
, Arm Limited and Contributors. All rights reserved.*
.. _CVE-2017-5715: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5715
.. _CVE-2017-5715: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5715
.. _CVE-2018-3639: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-3639
.. _CVE-2018-3639: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-3639
...
...
include/lib/cpus/aarch64/cortex_a78.h
View file @
23751114
...
@@ -4,31 +4,31 @@
...
@@ -4,31 +4,31 @@
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
*/
#ifndef CORTEX_
HERCULES
_H
#ifndef CORTEX_
A78
_H
#define CORTEX_
HERCULES
_H
#define CORTEX_
A78
_H
#include <lib/utils_def.h>
#include <lib/utils_def.h>
#define CORTEX_
HERCULES
_MIDR U(0x410FD410)
#define CORTEX_
A78
_MIDR U(0x410FD410)
/*******************************************************************************
/*******************************************************************************
* CPU Extended Control register specific definitions.
* CPU Extended Control register specific definitions.
******************************************************************************/
******************************************************************************/
#define CORTEX_
HERCULES
_CPUECTLR_EL1 S3_0_C15_C1_4
#define CORTEX_
A78
_CPUECTLR_EL1 S3_0_C15_C1_4
/*******************************************************************************
/*******************************************************************************
* CPU Power Control register specific definitions
* CPU Power Control register specific definitions
******************************************************************************/
******************************************************************************/
#define CORTEX_
HERCULES
_CPUPWRCTLR_EL1 S3_0_C15_C2_7
#define CORTEX_
A78
_CPUPWRCTLR_EL1 S3_0_C15_C2_7
#define CORTEX_
HERCULES
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT U(1)
#define CORTEX_
A78
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT U(1)
/*******************************************************************************
/*******************************************************************************
* CPU Auxiliary Control register specific definitions.
* CPU Auxiliary Control register specific definitions.
******************************************************************************/
******************************************************************************/
#define CORTEX_
HERCULES
_ACTLR_TAM_BIT (ULL(1) << 30)
#define CORTEX_
A78
_ACTLR_TAM_BIT (ULL(1) << 30)
#define CORTEX_
HERCULES
_ACTLR2_EL1 S3_0_C15_C1_1
#define CORTEX_
A78
_ACTLR2_EL1 S3_0_C15_C1_1
#define CORTEX_
HERCULES
_ACTLR2_EL1_BIT_1 (ULL(1) << 1)
#define CORTEX_
A78
_ACTLR2_EL1_BIT_1 (ULL(1) << 1)
/*******************************************************************************
/*******************************************************************************
* CPU Activity Monitor Unit register specific definitions.
* CPU Activity Monitor Unit register specific definitions.
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
#define CPUAMCNTENCLR1_EL0 S3_3_C15_C3_0
#define CPUAMCNTENCLR1_EL0 S3_3_C15_C3_0
#define CPUAMCNTENSET1_EL0 S3_3_C15_C3_1
#define CPUAMCNTENSET1_EL0 S3_3_C15_C3_1
#define CORTEX_
HERCULES
_AMU_GROUP0_MASK U(0xF)
#define CORTEX_
A78
_AMU_GROUP0_MASK U(0xF)
#define CORTEX_
HERCULES
_AMU_GROUP1_MASK U(0x7)
#define CORTEX_
A78
_AMU_GROUP1_MASK U(0x7)
#endif
/* CORTEX_
HERCULES
_H */
#endif
/* CORTEX_
A78
_H */
lib/cpus/aarch64/cortex_a78.S
View file @
23751114
...
@@ -13,30 +13,30 @@
...
@@ -13,30 +13,30 @@
/*
Hardware
handled
coherency
*/
/*
Hardware
handled
coherency
*/
#if HW_ASSISTED_COHERENCY == 0
#if HW_ASSISTED_COHERENCY == 0
#error "cortex_
hercules
must be compiled with HW_ASSISTED_COHERENCY enabled"
#error "cortex_
a78
must be compiled with HW_ASSISTED_COHERENCY enabled"
#endif
#endif
/*
--------------------------------------------------
/*
--------------------------------------------------
*
Errata
Workaround
for
Hercules
Erratum
1688305
.
*
Errata
Workaround
for
A78
Erratum
1688305
.
*
This
applies
to
revision
r0p0
and
r1p0
of
Hercules
.
*
This
applies
to
revision
r0p0
and
r1p0
of
A78
.
*
Inputs
:
*
Inputs
:
*
x0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
x0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
Shall
clobber
:
x0
-
x17
*
Shall
clobber
:
x0
-
x17
*
--------------------------------------------------
*
--------------------------------------------------
*/
*/
func
errata_
hercules
_1688305_wa
func
errata_
a78
_1688305_wa
/
*
Compare
x0
against
revision
r1p0
*/
/
*
Compare
x0
against
revision
r1p0
*/
mov
x17
,
x30
mov
x17
,
x30
bl
check_errata_1688305
bl
check_errata_1688305
cbz
x0
,
1
f
cbz
x0
,
1
f
mrs
x1
,
CORTEX_
HERCULES
_ACTLR2_EL1
mrs
x1
,
CORTEX_
A78
_ACTLR2_EL1
orr
x1
,
x1
,
CORTEX_
HERCULES
_ACTLR2_EL1_BIT_1
orr
x1
,
x1
,
CORTEX_
A78
_ACTLR2_EL1_BIT_1
msr
CORTEX_
HERCULES
_ACTLR2_EL1
,
x1
msr
CORTEX_
A78
_ACTLR2_EL1
,
x1
isb
isb
1
:
1
:
ret
x17
ret
x17
endfunc
errata_
hercules
_1688305_wa
endfunc
errata_
a78
_1688305_wa
func
check_errata_1688305
func
check_errata_1688305
/
*
Applies
to
r0p0
and
r1p0
*/
/
*
Applies
to
r0p0
and
r1p0
*/
...
@@ -45,64 +45,64 @@ func check_errata_1688305
...
@@ -45,64 +45,64 @@ func check_errata_1688305
endfunc
check_errata_1688305
endfunc
check_errata_1688305
/
*
-------------------------------------------------
/
*
-------------------------------------------------
*
The
CPU
Ops
reset
function
for
Cortex
-
Hercules
*
The
CPU
Ops
reset
function
for
Cortex
-
A78
*
-------------------------------------------------
*
-------------------------------------------------
*/
*/
func
cortex_
hercules
_reset_func
func
cortex_
a78
_reset_func
mov
x19
,
x30
mov
x19
,
x30
bl
cpu_get_rev_var
bl
cpu_get_rev_var
mov
x18
,
x0
mov
x18
,
x0
#if ERRATA_
HERCULES
_1688305
#if ERRATA_
A78
_1688305
mov
x0
,
x18
mov
x0
,
x18
bl
errata_
hercules
_1688305_wa
bl
errata_
a78
_1688305_wa
#endif
#endif
#if ENABLE_AMU
#if ENABLE_AMU
/
*
Make
sure
accesses
from
EL0
/
EL1
and
EL2
are
not
trapped
to
EL3
*/
/
*
Make
sure
accesses
from
EL0
/
EL1
and
EL2
are
not
trapped
to
EL3
*/
mrs
x0
,
actlr_el3
mrs
x0
,
actlr_el3
bic
x0
,
x0
,
#
CORTEX_
HERCULES
_ACTLR_TAM_BIT
bic
x0
,
x0
,
#
CORTEX_
A78
_ACTLR_TAM_BIT
msr
actlr_el3
,
x0
msr
actlr_el3
,
x0
/
*
Make
sure
accesses
from
non
-
secure
EL0
/
EL1
are
not
trapped
to
EL2
*/
/
*
Make
sure
accesses
from
non
-
secure
EL0
/
EL1
are
not
trapped
to
EL2
*/
mrs
x0
,
actlr_el2
mrs
x0
,
actlr_el2
bic
x0
,
x0
,
#
CORTEX_
HERCULES
_ACTLR_TAM_BIT
bic
x0
,
x0
,
#
CORTEX_
A78
_ACTLR_TAM_BIT
msr
actlr_el2
,
x0
msr
actlr_el2
,
x0
/
*
Enable
group0
counters
*/
/
*
Enable
group0
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP0_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP0_MASK
msr
CPUAMCNTENSET0_EL0
,
x0
msr
CPUAMCNTENSET0_EL0
,
x0
/
*
Enable
group1
counters
*/
/
*
Enable
group1
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP1_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP1_MASK
msr
CPUAMCNTENSET1_EL0
,
x0
msr
CPUAMCNTENSET1_EL0
,
x0
#endif
#endif
isb
isb
ret
x19
ret
x19
endfunc
cortex_
hercules
_reset_func
endfunc
cortex_
a78
_reset_func
/
*
---------------------------------------------
/
*
---------------------------------------------
*
HW
will
do
the
cache
maintenance
while
powering
down
*
HW
will
do
the
cache
maintenance
while
powering
down
*
---------------------------------------------
*
---------------------------------------------
*/
*/
func
cortex_
hercules
_core_pwr_dwn
func
cortex_
a78
_core_pwr_dwn
/
*
---------------------------------------------
/
*
---------------------------------------------
*
Enable
CPU
power
down
bit
in
power
control
register
*
Enable
CPU
power
down
bit
in
power
control
register
*
---------------------------------------------
*
---------------------------------------------
*/
*/
mrs
x0
,
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
mrs
x0
,
CORTEX_
A78
_CPUPWRCTLR_EL1
orr
x0
,
x0
,
#
CORTEX_
HERCULES
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
orr
x0
,
x0
,
#
CORTEX_
A78
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
msr
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
,
x0
msr
CORTEX_
A78
_CPUPWRCTLR_EL1
,
x0
isb
isb
ret
ret
endfunc
cortex_
hercules
_core_pwr_dwn
endfunc
cortex_
a78
_core_pwr_dwn
/
*
/
*
*
Errata
printing
function
for
cortex_
hercules
.
Must
follow
AAPCS
.
*
Errata
printing
function
for
cortex_
a78
.
Must
follow
AAPCS
.
*/
*/
#if REPORT_ERRATA
#if REPORT_ERRATA
func
cortex_
hercules
_errata_report
func
cortex_
a78
_errata_report
stp
x8
,
x30
,
[
sp
,
#-
16
]!
stp
x8
,
x30
,
[
sp
,
#-
16
]!
bl
cpu_get_rev_var
bl
cpu_get_rev_var
...
@@ -112,15 +112,15 @@ func cortex_hercules_errata_report
...
@@ -112,15 +112,15 @@ func cortex_hercules_errata_report
*
Report
all
errata
.
The
revision
-
variant
information
is
passed
to
*
Report
all
errata
.
The
revision
-
variant
information
is
passed
to
*
checking
functions
of
each
errata
.
*
checking
functions
of
each
errata
.
*/
*/
report_errata
ERRATA_
HERCULES
_1688305
,
cortex_
hercules
,
1688305
report_errata
ERRATA_
A78
_1688305
,
cortex_
a78
,
1688305
ldp
x8
,
x30
,
[
sp
],
#
16
ldp
x8
,
x30
,
[
sp
],
#
16
ret
ret
endfunc
cortex_
hercules
_errata_report
endfunc
cortex_
a78
_errata_report
#endif
#endif
/
*
---------------------------------------------
/
*
---------------------------------------------
*
This
function
provides
cortex_
hercules
specific
*
This
function
provides
cortex_
a78
specific
*
register
information
for
crash
reporting
.
*
register
information
for
crash
reporting
.
*
It
needs
to
return
with
x6
pointing
to
*
It
needs
to
return
with
x6
pointing
to
*
a
list
of
register
names
in
ascii
and
*
a
list
of
register
names
in
ascii
and
...
@@ -128,16 +128,16 @@ endfunc cortex_hercules_errata_report
...
@@ -128,16 +128,16 @@ endfunc cortex_hercules_errata_report
*
reported
.
*
reported
.
*
---------------------------------------------
*
---------------------------------------------
*/
*/
.
section
.
rodata.
cortex_
hercules
_regs
,
"aS"
.
section
.
rodata.
cortex_
a78
_regs
,
"aS"
cortex_
hercules
_regs
:
/
*
The
ascii
list
of
register
names
to
be
reported
*/
cortex_
a78
_regs
:
/
*
The
ascii
list
of
register
names
to
be
reported
*/
.
asciz
"cpuectlr_el1"
,
""
.
asciz
"cpuectlr_el1"
,
""
func
cortex_
hercules
_cpu_reg_dump
func
cortex_
a78
_cpu_reg_dump
adr
x6
,
cortex_
hercules
_regs
adr
x6
,
cortex_
a78
_regs
mrs
x8
,
CORTEX_
HERCULES
_CPUECTLR_EL1
mrs
x8
,
CORTEX_
A78
_CPUECTLR_EL1
ret
ret
endfunc
cortex_
hercules
_cpu_reg_dump
endfunc
cortex_
a78
_cpu_reg_dump
declare_cpu_ops
cortex_
hercules
,
CORTEX_
HERCULES
_MIDR
,
\
declare_cpu_ops
cortex_
a78
,
CORTEX_
A78
_MIDR
,
\
cortex_
hercules
_reset_func
,
\
cortex_
a78
_reset_func
,
\
cortex_
hercules
_core_pwr_dwn
cortex_
a78
_core_pwr_dwn
lib/cpus/aarch64/cortex_hercules_ae.S
View file @
23751114
/*
/*
*
Copyright
(
c
)
2019
,
ARM
Limited
.
All
rights
reserved
.
*
Copyright
(
c
)
2019
-
2020
,
ARM
Limited
.
All
rights
reserved
.
*
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
*/
...
@@ -24,20 +24,20 @@
...
@@ -24,20 +24,20 @@
func
cortex_hercules_ae_reset_func
func
cortex_hercules_ae_reset_func
/
*
Make
sure
accesses
from
EL0
/
EL1
and
EL2
are
not
trapped
to
EL3
*/
/
*
Make
sure
accesses
from
EL0
/
EL1
and
EL2
are
not
trapped
to
EL3
*/
mrs
x0
,
actlr_el3
mrs
x0
,
actlr_el3
bic
x0
,
x0
,
#
CORTEX_
HERCULES
_ACTLR_TAM_BIT
bic
x0
,
x0
,
#
CORTEX_
A78
_ACTLR_TAM_BIT
msr
actlr_el3
,
x0
msr
actlr_el3
,
x0
/
*
Make
sure
accesses
from
non
-
secure
EL0
/
EL1
are
not
trapped
to
EL2
*/
/
*
Make
sure
accesses
from
non
-
secure
EL0
/
EL1
are
not
trapped
to
EL2
*/
mrs
x0
,
actlr_el2
mrs
x0
,
actlr_el2
bic
x0
,
x0
,
#
CORTEX_
HERCULES
_ACTLR_TAM_BIT
bic
x0
,
x0
,
#
CORTEX_
A78
_ACTLR_TAM_BIT
msr
actlr_el2
,
x0
msr
actlr_el2
,
x0
/
*
Enable
group0
counters
*/
/
*
Enable
group0
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP0_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP0_MASK
msr
CPUAMCNTENSET0_EL0
,
x0
msr
CPUAMCNTENSET0_EL0
,
x0
/
*
Enable
group1
counters
*/
/
*
Enable
group1
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP1_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP1_MASK
msr
CPUAMCNTENSET1_EL0
,
x0
msr
CPUAMCNTENSET1_EL0
,
x0
isb
isb
...
@@ -54,9 +54,9 @@ func cortex_hercules_ae_core_pwr_dwn
...
@@ -54,9 +54,9 @@ func cortex_hercules_ae_core_pwr_dwn
*
Enable
CPU
power
down
bit
in
power
control
register
*
Enable
CPU
power
down
bit
in
power
control
register
*
-------------------------------------------------------
*
-------------------------------------------------------
*/
*/
mrs
x0
,
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
mrs
x0
,
CORTEX_
A78
_CPUPWRCTLR_EL1
orr
x0
,
x0
,
#
CORTEX_
HERCULES
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
orr
x0
,
x0
,
#
CORTEX_
A78
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
msr
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
,
x0
msr
CORTEX_
A78
_CPUPWRCTLR_EL1
,
x0
isb
isb
ret
ret
endfunc
cortex_hercules_ae_core_pwr_dwn
endfunc
cortex_hercules_ae_core_pwr_dwn
...
@@ -85,7 +85,7 @@ cortex_hercules_ae_regs: /* The ascii list of register names to be reported */
...
@@ -85,7 +85,7 @@ cortex_hercules_ae_regs: /* The ascii list of register names to be reported */
func
cortex_hercules_ae_cpu_reg_dump
func
cortex_hercules_ae_cpu_reg_dump
adr
x6
,
cortex_hercules_ae_regs
adr
x6
,
cortex_hercules_ae_regs
mrs
x8
,
CORTEX_
HERCULES
_CPUECTLR_EL1
mrs
x8
,
CORTEX_
A78
_CPUECTLR_EL1
ret
ret
endfunc
cortex_hercules_ae_cpu_reg_dump
endfunc
cortex_hercules_ae_cpu_reg_dump
...
...
lib/cpus/cpu-ops.mk
View file @
23751114
...
@@ -251,8 +251,8 @@ ERRATA_A76_1275112 ?=0
...
@@ -251,8 +251,8 @@ ERRATA_A76_1275112 ?=0
ERRATA_A76_1286807
?=
0
ERRATA_A76_1286807
?=
0
# Flag to apply erratum 1688305 workaround during reset. This erratum applies
# Flag to apply erratum 1688305 workaround during reset. This erratum applies
# to revisions r0p0 - r1p0 of the
Hercules
cpu.
# to revisions r0p0 - r1p0 of the
A78
cpu.
ERRATA_
HERCULES
_1688305
?=
0
ERRATA_
A78
_1688305
?=
0
# Flag to apply T32 CLREX workaround during reset. This erratum applies
# Flag to apply T32 CLREX workaround during reset. This erratum applies
# only to r0p0 and r1p0 of the Neoverse N1 cpu.
# only to r0p0 and r1p0 of the Neoverse N1 cpu.
...
@@ -487,9 +487,9 @@ $(eval $(call add_define,ERRATA_A76_1275112))
...
@@ -487,9 +487,9 @@ $(eval $(call add_define,ERRATA_A76_1275112))
$(eval
$(call
assert_boolean,ERRATA_A76_1286807))
$(eval
$(call
assert_boolean,ERRATA_A76_1286807))
$(eval
$(call
add_define,ERRATA_A76_1286807))
$(eval
$(call
add_define,ERRATA_A76_1286807))
# Process ERRATA_
HERCULES
_1688305 flag
# Process ERRATA_
A78
_1688305 flag
$(eval
$(call
assert_boolean,ERRATA_
HERCULES
_1688305))
$(eval
$(call
assert_boolean,ERRATA_
A78
_1688305))
$(eval
$(call
add_define,ERRATA_
HERCULES
_1688305))
$(eval
$(call
add_define,ERRATA_
A78
_1688305))
# Process ERRATA_N1_1043202 flag
# Process ERRATA_N1_1043202 flag
$(eval
$(call
assert_boolean,ERRATA_N1_1043202))
$(eval
$(call
assert_boolean,ERRATA_N1_1043202))
...
...
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