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
f2f04434
Unverified
Commit
f2f04434
authored
6 years ago
by
Antonio Niño Díaz
Committed by
GitHub
6 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1747 from antonio-nino-diaz-arm/an/cnp-dynamic
xlat v2: Dynamically detect need for CnP bit
parents
a9d69010
2559b2c8
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
v2.3
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.2
v2.2-rc2
v2.2-rc1
v2.2-rc0
v2.1
v2.1-rc1
v2.1-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
include/arch/aarch32/arch.h
+8
-3
include/arch/aarch32/arch.h
include/arch/aarch32/arch_features.h
+20
-0
include/arch/aarch32/arch_features.h
include/arch/aarch32/arch_helpers.h
+2
-1
include/arch/aarch32/arch_helpers.h
include/arch/aarch64/arch.h
+10
-5
include/arch/aarch64/arch.h
include/arch/aarch64/arch_features.h
+20
-0
include/arch/aarch64/arch_features.h
include/arch/aarch64/arch_helpers.h
+4
-1
include/arch/aarch64/arch_helpers.h
lib/xlat_tables_v2/aarch32/xlat_tables_arch.c
+6
-8
lib/xlat_tables_v2/aarch32/xlat_tables_arch.c
lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
+6
-8
lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
with
76 additions
and
26 deletions
+76
-26
include/arch/aarch32/arch.h
View file @
f2f04434
/*
* Copyright (c) 2016-201
8
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-201
9
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -94,12 +94,16 @@
/* CSSELR definitions */
#define LEVEL_SHIFT U(1)
/* ID_PFR0 AMU definitions */
/* ID_MMFR4 definitions */
#define ID_MMFR4_CNP_SHIFT U(12)
#define ID_MMFR4_CNP_LENGTH U(4)
#define ID_MMFR4_CNP_MASK U(0xf)
/* ID_PFR0 definitions */
#define ID_PFR0_AMU_SHIFT U(20)
#define ID_PFR0_AMU_LENGTH U(4)
#define ID_PFR0_AMU_MASK U(0xf)
/* ID_PFR0 DIT definitions */
#define ID_PFR0_DIT_SHIFT U(24)
#define ID_PFR0_DIT_LENGTH U(4)
#define ID_PFR0_DIT_MASK U(0xf)
...
...
@@ -475,6 +479,7 @@
#define DCISW p15, 0, c7, c6, 2
#define CTR p15, 0, c0, c0, 1
#define CNTFRQ p15, 0, c14, c0, 0
#define ID_MMFR4 p15, 0, c0, c2, 6
#define ID_PFR0 p15, 0, c0, c1, 0
#define ID_PFR1 p15, 0, c0, c1, 1
#define MAIR0 p15, 0, c10, c2, 0
...
...
This diff is collapsed.
Click to expand it.
include/arch/aarch32/arch_features.h
0 → 100644
View file @
f2f04434
/*
* Copyright (c) 2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef ARCH_FEATURES_H
#define ARCH_FEATURES_H
#include <stdbool.h>
#include <arch_helpers.h>
static
inline
bool
is_armv8_2_ttcnp_present
(
void
)
{
return
((
read_id_mmfr4
()
>>
ID_MMFR4_CNP_SHIFT
)
&
ID_MMFR4_CNP_MASK
)
!=
0U
;
}
#endif
/* ARCH_FEATURES_H */
This diff is collapsed.
Click to expand it.
include/arch/aarch32/arch_helpers.h
View file @
f2f04434
/*
* Copyright (c) 2016-201
8
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-201
9
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -214,6 +214,7 @@ DEFINE_SYSREG_RW_FUNCS(cpsr)
******************************************************************************/
DEFINE_COPROCR_READ_FUNC
(
mpidr
,
MPIDR
)
DEFINE_COPROCR_READ_FUNC
(
midr
,
MIDR
)
DEFINE_COPROCR_READ_FUNC
(
id_mmfr4
,
ID_MMFR4
)
DEFINE_COPROCR_READ_FUNC
(
id_pfr0
,
ID_PFR0
)
DEFINE_COPROCR_READ_FUNC
(
id_pfr1
,
ID_PFR1
)
DEFINE_COPROCR_READ_FUNC
(
isr
,
ISR
)
...
...
This diff is collapsed.
Click to expand it.
include/arch/aarch64/arch.h
View file @
f2f04434
/*
* Copyright (c) 2013-201
8
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2013-201
9
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -156,10 +156,6 @@
#define ID_AA64PFR0_GIC_WIDTH U(4)
#define ID_AA64PFR0_GIC_MASK ((ULL(1) << ID_AA64PFR0_GIC_WIDTH) - ULL(1))
/* ID_AA64MMFR0_EL1 definitions */
#define ID_AA64MMFR0_EL1_PARANGE_SHIFT U(0)
#define ID_AA64MMFR0_EL1_PARANGE_MASK ULL(0xf)
/* ID_AA64ISAR1_EL1 definitions */
#define ID_AA64ISAR1_GPI_SHIFT U(28)
#define ID_AA64ISAR1_GPI_WIDTH U(4)
...
...
@@ -179,6 +175,10 @@
#define ID_AA64ISAR1_APA_MASK \
(((ULL(1) << ID_AA64ISAR1_APA_WIDTH) - ULL(1)) << ID_AA64ISAR1_APA_SHIFT)
/* ID_AA64MMFR0_EL1 definitions */
#define ID_AA64MMFR0_EL1_PARANGE_SHIFT U(0)
#define ID_AA64MMFR0_EL1_PARANGE_MASK ULL(0xf)
#define PARANGE_0000 U(32)
#define PARANGE_0001 U(36)
#define PARANGE_0010 U(40)
...
...
@@ -202,6 +202,11 @@
#define ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED ULL(0x1)
#define ID_AA64MMFR0_EL1_TGRAN16_NOT_SUPPORTED ULL(0x0)
/* ID_AA64MMFR2_EL1 definitions */
#define ID_AA64MMFR2_EL1 S3_0_C0_C7_2
#define ID_AA64MMFR2_EL1_CNP_SHIFT U(0)
#define ID_AA64MMFR2_EL1_CNP_MASK ULL(0xf)
/* ID_AA64PFR1_EL1 definitions */
#define ID_AA64PFR1_EL1_SSBS_SHIFT U(4)
#define ID_AA64PFR1_EL1_SSBS_MASK ULL(0xf)
...
...
This diff is collapsed.
Click to expand it.
include/arch/aarch64/arch_features.h
0 → 100644
View file @
f2f04434
/*
* Copyright (c) 2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef ARCH_FEATURES_H
#define ARCH_FEATURES_H
#include <stdbool.h>
#include <arch_helpers.h>
static
inline
bool
is_armv8_2_ttcnp_present
(
void
)
{
return
((
read_id_aa64mmfr2_el1
()
>>
ID_AA64MMFR2_EL1_CNP_SHIFT
)
&
ID_AA64MMFR2_EL1_CNP_MASK
)
!=
0U
;
}
#endif
/* ARCH_FEATURES_H */
This diff is collapsed.
Click to expand it.
include/arch/aarch64/arch_helpers.h
View file @
f2f04434
/*
* Copyright (c) 2013-201
8
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2013-201
9
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -449,6 +449,9 @@ DEFINE_RENAME_SYSREG_READ_FUNC(erxaddr_el1, ERXADDR_EL1)
DEFINE_RENAME_SYSREG_READ_FUNC
(
erxmisc0_el1
,
ERXMISC0_EL1
)
DEFINE_RENAME_SYSREG_READ_FUNC
(
erxmisc1_el1
,
ERXMISC1_EL1
)
/* Armv8.2 Registers */
DEFINE_RENAME_SYSREG_READ_FUNC
(
id_aa64mmfr2_el1
,
ID_AA64MMFR2_EL1
)
/* Armv8.3 Pointer Authentication Registers */
DEFINE_RENAME_SYSREG_RW_FUNCS
(
apgakeylo_el1
,
APGAKeyLo_EL1
)
...
...
This diff is collapsed.
Click to expand it.
lib/xlat_tables_v2/aarch32/xlat_tables_arch.c
View file @
f2f04434
/*
* Copyright (c) 2017-201
8
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2017-201
9
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -10,6 +10,7 @@
#include <platform_def.h>
#include <arch.h>
#include <arch_features.h>
#include <arch_helpers.h>
#include <lib/cassert.h>
#include <lib/utils_def.h>
...
...
@@ -219,13 +220,10 @@ void setup_mmu_cfg(uint64_t *params, unsigned int flags,
/* Set TTBR0 bits as well */
ttbr0
=
(
uint64_t
)(
uintptr_t
)
base_table
;
#if ARM_ARCH_AT_LEAST(8, 2)
/*
* Enable CnP bit so as to share page tables with all PEs. This
* is mandatory for ARMv8.2 implementations.
*/
ttbr0
|=
TTBR_CNP_BIT
;
#endif
if
(
is_armv8_2_ttcnp_present
())
{
/* Enable CnP bit so as to share page tables with all PEs. */
ttbr0
|=
TTBR_CNP_BIT
;
}
/* Now populate MMU configuration */
params
[
MMU_CFG_MAIR
]
=
mair
;
...
...
This diff is collapsed.
Click to expand it.
lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
View file @
f2f04434
/*
* Copyright (c) 2017-201
8
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2017-201
9
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -9,6 +9,7 @@
#include <stdint.h>
#include <arch.h>
#include <arch_features.h>
#include <arch_helpers.h>
#include <lib/cassert.h>
#include <lib/utils_def.h>
...
...
@@ -266,13 +267,10 @@ void setup_mmu_cfg(uint64_t *params, unsigned int flags,
/* Set TTBR bits as well */
ttbr0
=
(
uint64_t
)
base_table
;
#if ARM_ARCH_AT_LEAST(8, 2)
/*
* Enable CnP bit so as to share page tables with all PEs. This
* is mandatory for ARMv8.2 implementations.
*/
ttbr0
|=
TTBR_CNP_BIT
;
#endif
if
(
is_armv8_2_ttcnp_present
())
{
/* Enable CnP bit so as to share page tables with all PEs. */
ttbr0
|=
TTBR_CNP_BIT
;
}
params
[
MMU_CFG_MAIR
]
=
mair
;
params
[
MMU_CFG_TCR
]
=
tcr
;
...
...
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