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
29d13744
Commit
29d13744
authored
Jan 22, 2020
by
Mark Dykes
Committed by
TrustedFirmware Code Review
Jan 22, 2020
Browse files
Merge "plat/arm: Add support for SEPARATE_NOBITS_REGION" into integration
parents
aa386f7a
d433bbdd
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/plat/arm/common/arm_def.h
View file @
29d13744
/*
/*
* Copyright (c) 2015-20
19
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-20
20
, ARM Limited and Contributors. All rights reserved.
*
*
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
*/
...
@@ -395,13 +395,21 @@
...
@@ -395,13 +395,21 @@
/*******************************************************************************
/*******************************************************************************
* BL31 specific defines.
* BL31 specific defines.
******************************************************************************/
******************************************************************************/
#if ARM_BL31_IN_DRAM
#if ARM_BL31_IN_DRAM
|| SEPARATE_NOBITS_REGION
/*
/*
* Put BL31 at the bottom of TZC secured DRAM
* Put BL31 at the bottom of TZC secured DRAM
*/
*/
#define BL31_BASE ARM_AP_TZC_DRAM1_BASE
#define BL31_BASE ARM_AP_TZC_DRAM1_BASE
#define BL31_LIMIT (ARM_AP_TZC_DRAM1_BASE + \
#define BL31_LIMIT (ARM_AP_TZC_DRAM1_BASE + \
PLAT_ARM_MAX_BL31_SIZE)
PLAT_ARM_MAX_BL31_SIZE)
/*
* For SEPARATE_NOBITS_REGION, BL31 PROGBITS are loaded in TZC secured DRAM.
* And BL31 NOBITS are loaded in Trusted SRAM such that BL2 is overwritten.
*/
#if SEPARATE_NOBITS_REGION
#define BL31_NOBITS_BASE BL2_BASE
#define BL31_NOBITS_LIMIT BL2_LIMIT
#endif
/* SEPARATE_NOBITS_REGION */
#elif (RESET_TO_BL31)
#elif (RESET_TO_BL31)
/* Ensure Position Independent support (PIE) is enabled for this config.*/
/* Ensure Position Independent support (PIE) is enabled for this config.*/
# if !ENABLE_PIE
# if !ENABLE_PIE
...
...
plat/arm/common/arm_bl31_setup.c
View file @
29d13744
/*
/*
* Copyright (c) 2015-20
19
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-20
20
, ARM Limited and Contributors. All rights reserved.
*
*
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
*/
...
@@ -56,6 +56,14 @@ IMPORT_SYM(unsigned long, __INIT_CODE_END__, BL_INIT_CODE_END);
...
@@ -56,6 +56,14 @@ IMPORT_SYM(unsigned long, __INIT_CODE_END__, BL_INIT_CODE_END);
MT_CODE | MT_SECURE)
MT_CODE | MT_SECURE)
#endif
#endif
#if SEPARATE_NOBITS_REGION
#define MAP_BL31_NOBITS MAP_REGION_FLAT( \
BL31_NOBITS_BASE, \
BL31_NOBITS_LIMIT \
- BL31_NOBITS_BASE, \
MT_MEMORY | MT_RW | MT_SECURE)
#endif
/*******************************************************************************
/*******************************************************************************
* Return a pointer to the 'entry_point_info' structure of the next image for the
* Return a pointer to the 'entry_point_info' structure of the next image for the
* security state specified. BL33 corresponds to the non-secure image type
* security state specified. BL33 corresponds to the non-secure image type
...
@@ -294,6 +302,9 @@ void __init arm_bl31_plat_arch_setup(void)
...
@@ -294,6 +302,9 @@ void __init arm_bl31_plat_arch_setup(void)
MAP_BL31_TOTAL
,
MAP_BL31_TOTAL
,
#if RECLAIM_INIT_CODE
#if RECLAIM_INIT_CODE
MAP_BL_INIT_CODE
,
MAP_BL_INIT_CODE
,
#endif
#if SEPARATE_NOBITS_REGION
MAP_BL31_NOBITS
,
#endif
#endif
ARM_MAP_BL_RO
,
ARM_MAP_BL_RO
,
#if USE_ROMLIB
#if USE_ROMLIB
...
...
plat/arm/common/arm_common.mk
View file @
29d13744
#
#
# Copyright (c) 2015-20
19
, ARM Limited and Contributors. All rights reserved.
# Copyright (c) 2015-20
20
, ARM Limited and Contributors. All rights reserved.
#
#
# SPDX-License-Identifier: BSD-3-Clause
# SPDX-License-Identifier: BSD-3-Clause
#
#
...
@@ -125,6 +125,23 @@ ENABLE_PMF := 1
...
@@ -125,6 +125,23 @@ ENABLE_PMF := 1
# mapping the former as executable and the latter as execute-never.
# mapping the former as executable and the latter as execute-never.
SEPARATE_CODE_AND_RODATA
:=
1
SEPARATE_CODE_AND_RODATA
:=
1
# On ARM platforms, disable SEPARATE_NOBITS_REGION by default. Both PROGBITS
# and NOBITS sections of BL31 image are adjacent to each other and loaded
# into Trusted SRAM.
SEPARATE_NOBITS_REGION
:=
0
# In order to support SEPARATE_NOBITS_REGION for Arm platforms, we need to load
# BL31 PROGBITS into secure DRAM space and BL31 NOBITS into SRAM. Hence mandate
# the build to require that ARM_BL31_IN_DRAM is enabled as well.
ifeq
($(SEPARATE_NOBITS_REGION),1)
ifneq
($(ARM_BL31_IN_DRAM),1)
$(error
For
SEPARATE_NOBITS_REGION,
ARM_BL31_IN_DRAM
must
be
enabled)
endif
ifneq
($(RECLAIM_INIT_CODE),0)
$(error
For
SEPARATE_NOBITS_REGION,
RECLAIM_INIT_CODE
cannot
be
supported)
endif
endif
# Disable ARM Cryptocell by default
# Disable ARM Cryptocell by default
ARM_CRYPTOCELL_INTEG
:=
0
ARM_CRYPTOCELL_INTEG
:=
0
$(eval
$(call
assert_boolean,ARM_CRYPTOCELL_INTEG))
$(eval
$(call
assert_boolean,ARM_CRYPTOCELL_INTEG))
...
...
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