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
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 :
- ``ERRATA_A76_1275112``: This applies errata 1275112 workaround to Cortex-A76
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
Hercules CPU. This needs to be enabled only for revision r0p0 - r1p0 of
the CPU.
- ``ERRATA_A78_1688305``: This applies errata 1688305 workaround to Cortex-A78
CPU. This needs to be enabled only for revision r0p0 - r1p0 of the CPU.
For Neoverse N1, the following errata build flags are defined :
...
...
@@ -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-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 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef CORTEX_
HERCULES
_H
#define CORTEX_
HERCULES
_H
#ifndef CORTEX_
A78
_H
#define CORTEX_
A78
_H
#include <lib/utils_def.h>
#define CORTEX_
HERCULES
_MIDR U(0x410FD410)
#define CORTEX_
A78
_MIDR U(0x410FD410)
/*******************************************************************************
* 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
******************************************************************************/
#define CORTEX_
HERCULES
_CPUPWRCTLR_EL1 S3_0_C15_C2_7
#define CORTEX_
HERCULES
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT U(1)
#define CORTEX_
A78
_CPUPWRCTLR_EL1 S3_0_C15_C2_7
#define CORTEX_
A78
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT U(1)
/*******************************************************************************
* 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_
HERCULES
_ACTLR2_EL1_BIT_1 (ULL(1) << 1)
#define CORTEX_
A78
_ACTLR2_EL1 S3_0_C15_C1_1
#define CORTEX_
A78
_ACTLR2_EL1_BIT_1 (ULL(1) << 1)
/*******************************************************************************
* CPU Activity Monitor Unit register specific definitions.
...
...
@@ -38,7 +38,7 @@
#define CPUAMCNTENCLR1_EL0 S3_3_C15_C3_0
#define CPUAMCNTENSET1_EL0 S3_3_C15_C3_1
#define CORTEX_
HERCULES
_AMU_GROUP0_MASK U(0xF)
#define CORTEX_
HERCULES
_AMU_GROUP1_MASK U(0x7)
#define CORTEX_
A78
_AMU_GROUP0_MASK U(0xF)
#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 @@
/*
Hardware
handled
coherency
*/
#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
/*
--------------------------------------------------
*
Errata
Workaround
for
Hercules
Erratum
1688305
.
*
This
applies
to
revision
r0p0
and
r1p0
of
Hercules
.
*
Errata
Workaround
for
A78
Erratum
1688305
.
*
This
applies
to
revision
r0p0
and
r1p0
of
A78
.
*
Inputs
:
*
x0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
Shall
clobber
:
x0
-
x17
*
--------------------------------------------------
*/
func
errata_
hercules
_1688305_wa
func
errata_
a78
_1688305_wa
/
*
Compare
x0
against
revision
r1p0
*/
mov
x17
,
x30
bl
check_errata_1688305
cbz
x0
,
1
f
mrs
x1
,
CORTEX_
HERCULES
_ACTLR2_EL1
orr
x1
,
x1
,
CORTEX_
HERCULES
_ACTLR2_EL1_BIT_1
msr
CORTEX_
HERCULES
_ACTLR2_EL1
,
x1
mrs
x1
,
CORTEX_
A78
_ACTLR2_EL1
orr
x1
,
x1
,
CORTEX_
A78
_ACTLR2_EL1_BIT_1
msr
CORTEX_
A78
_ACTLR2_EL1
,
x1
isb
1
:
ret
x17
endfunc
errata_
hercules
_1688305_wa
endfunc
errata_
a78
_1688305_wa
func
check_errata_1688305
/
*
Applies
to
r0p0
and
r1p0
*/
...
...
@@ -45,64 +45,64 @@ func 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
bl
cpu_get_rev_var
mov
x18
,
x0
#if ERRATA_
HERCULES
_1688305
#if ERRATA_
A78
_1688305
mov
x0
,
x18
bl
errata_
hercules
_1688305_wa
bl
errata_
a78
_1688305_wa
#endif
#if ENABLE_AMU
/
*
Make
sure
accesses
from
EL0
/
EL1
and
EL2
are
not
trapped
to
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
/
*
Make
sure
accesses
from
non
-
secure
EL0
/
EL1
are
not
trapped
to
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
/
*
Enable
group0
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP0_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP0_MASK
msr
CPUAMCNTENSET0_EL0
,
x0
/
*
Enable
group1
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP1_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP1_MASK
msr
CPUAMCNTENSET1_EL0
,
x0
#endif
isb
ret
x19
endfunc
cortex_
hercules
_reset_func
endfunc
cortex_
a78
_reset_func
/
*
---------------------------------------------
*
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
*
---------------------------------------------
*/
mrs
x0
,
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
orr
x0
,
x0
,
#
CORTEX_
HERCULES
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
msr
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
,
x0
mrs
x0
,
CORTEX_
A78
_CPUPWRCTLR_EL1
orr
x0
,
x0
,
#
CORTEX_
A78
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
msr
CORTEX_
A78
_CPUPWRCTLR_EL1
,
x0
isb
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
func
cortex_
hercules
_errata_report
func
cortex_
a78
_errata_report
stp
x8
,
x30
,
[
sp
,
#-
16
]!
bl
cpu_get_rev_var
...
...
@@ -112,15 +112,15 @@ func cortex_hercules_errata_report
*
Report
all
errata
.
The
revision
-
variant
information
is
passed
to
*
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
ret
endfunc
cortex_
hercules
_errata_report
endfunc
cortex_
a78
_errata_report
#endif
/
*
---------------------------------------------
*
This
function
provides
cortex_
hercules
specific
*
This
function
provides
cortex_
a78
specific
*
register
information
for
crash
reporting
.
*
It
needs
to
return
with
x6
pointing
to
*
a
list
of
register
names
in
ascii
and
...
...
@@ -128,16 +128,16 @@ endfunc cortex_hercules_errata_report
*
reported
.
*
---------------------------------------------
*/
.
section
.
rodata.
cortex_
hercules
_regs
,
"aS"
cortex_
hercules
_regs
:
/
*
The
ascii
list
of
register
names
to
be
reported
*/
.
section
.
rodata.
cortex_
a78
_regs
,
"aS"
cortex_
a78
_regs
:
/
*
The
ascii
list
of
register
names
to
be
reported
*/
.
asciz
"cpuectlr_el1"
,
""
func
cortex_
hercules
_cpu_reg_dump
adr
x6
,
cortex_
hercules
_regs
mrs
x8
,
CORTEX_
HERCULES
_CPUECTLR_EL1
func
cortex_
a78
_cpu_reg_dump
adr
x6
,
cortex_
a78
_regs
mrs
x8
,
CORTEX_
A78
_CPUECTLR_EL1
ret
endfunc
cortex_
hercules
_cpu_reg_dump
endfunc
cortex_
a78
_cpu_reg_dump
declare_cpu_ops
cortex_
hercules
,
CORTEX_
HERCULES
_MIDR
,
\
cortex_
hercules
_reset_func
,
\
cortex_
hercules
_core_pwr_dwn
declare_cpu_ops
cortex_
a78
,
CORTEX_
A78
_MIDR
,
\
cortex_
a78
_reset_func
,
\
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
*/
...
...
@@ -24,20 +24,20 @@
func
cortex_hercules_ae_reset_func
/
*
Make
sure
accesses
from
EL0
/
EL1
and
EL2
are
not
trapped
to
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
/
*
Make
sure
accesses
from
non
-
secure
EL0
/
EL1
are
not
trapped
to
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
/
*
Enable
group0
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP0_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP0_MASK
msr
CPUAMCNTENSET0_EL0
,
x0
/
*
Enable
group1
counters
*/
mov
x0
,
#
CORTEX_
HERCULES
_AMU_GROUP1_MASK
mov
x0
,
#
CORTEX_
A78
_AMU_GROUP1_MASK
msr
CPUAMCNTENSET1_EL0
,
x0
isb
...
...
@@ -54,9 +54,9 @@ func cortex_hercules_ae_core_pwr_dwn
*
Enable
CPU
power
down
bit
in
power
control
register
*
-------------------------------------------------------
*/
mrs
x0
,
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
orr
x0
,
x0
,
#
CORTEX_
HERCULES
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
msr
CORTEX_
HERCULES
_CPUPWRCTLR_EL1
,
x0
mrs
x0
,
CORTEX_
A78
_CPUPWRCTLR_EL1
orr
x0
,
x0
,
#
CORTEX_
A78
_CPUPWRCTLR_EL1_CORE_PWRDN_EN_BIT
msr
CORTEX_
A78
_CPUPWRCTLR_EL1
,
x0
isb
ret
endfunc
cortex_hercules_ae_core_pwr_dwn
...
...
@@ -85,7 +85,7 @@ cortex_hercules_ae_regs: /* The ascii list of register names to be reported */
func
cortex_hercules_ae_cpu_reg_dump
adr
x6
,
cortex_hercules_ae_regs
mrs
x8
,
CORTEX_
HERCULES
_CPUECTLR_EL1
mrs
x8
,
CORTEX_
A78
_CPUECTLR_EL1
ret
endfunc
cortex_hercules_ae_cpu_reg_dump
...
...
lib/cpus/cpu-ops.mk
View file @
23751114
...
...
@@ -251,8 +251,8 @@ ERRATA_A76_1275112 ?=0
ERRATA_A76_1286807
?=
0
# Flag to apply erratum 1688305 workaround during reset. This erratum applies
# to revisions r0p0 - r1p0 of the
Hercules
cpu.
ERRATA_
HERCULES
_1688305
?=
0
# to revisions r0p0 - r1p0 of the
A78
cpu.
ERRATA_
A78
_1688305
?=
0
# Flag to apply T32 CLREX workaround during reset. This erratum applies
# only to r0p0 and r1p0 of the Neoverse N1 cpu.
...
...
@@ -487,9 +487,9 @@ $(eval $(call add_define,ERRATA_A76_1275112))
$(eval
$(call
assert_boolean,ERRATA_A76_1286807))
$(eval
$(call
add_define,ERRATA_A76_1286807))
# Process ERRATA_
HERCULES
_1688305 flag
$(eval
$(call
assert_boolean,ERRATA_
HERCULES
_1688305))
$(eval
$(call
add_define,ERRATA_
HERCULES
_1688305))
# Process ERRATA_
A78
_1688305 flag
$(eval
$(call
assert_boolean,ERRATA_
A78
_1688305))
$(eval
$(call
add_define,ERRATA_
A78
_1688305))
# Process ERRATA_N1_1043202 flag
$(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