diff options
author | Madhukar Pappireddy <madhukar.pappireddy@arm.com> | 2020-01-16 22:21:33 -0600 |
---|---|---|
committer | Madhukar Pappireddy <madhukar.pappireddy@arm.com> | 2020-01-21 19:24:18 -0600 |
commit | 76d84cbc60ab3ee7bf40d53487f85ed7417bdcc3 (patch) | |
tree | ef71a259ea0ba519ef54dc5944c69e85d67bed64 /lib | |
parent | d81e38f66e232ddd2590f50cafe88eef52d4a752 (diff) | |
download | platform_external_arm-trusted-firmware-76d84cbc60ab3ee7bf40d53487f85ed7417bdcc3.tar.gz platform_external_arm-trusted-firmware-76d84cbc60ab3ee7bf40d53487f85ed7417bdcc3.tar.bz2 platform_external_arm-trusted-firmware-76d84cbc60ab3ee7bf40d53487f85ed7417bdcc3.zip |
Changes necessary to support SEPARATE_NOBITS_REGION feature
Since BL31 PROGBITS and BL31 NOBITS sections are going to be
in non-adjacent memory regions, potentially far from each other,
some fixes are needed to support it completely.
1. adr instruction only allows computing the effective address
of a location only within 1MB range of the PC. However, adrp
instruction together with an add permits position independent
address of any location with 4GB range of PC.
2. Since BL31 _RW_END_ marks the end of BL31 image, care must be
taken that it is aligned to page size since we map this memory
region in BL31 using xlat_v2 lib utils which mandate alignment of
image size to page granularity.
Change-Id: Ic745c5a130fe4239fa2742142d083b2bdc4e8b85
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/el3_runtime/aarch64/cpu_data.S | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/el3_runtime/aarch64/cpu_data.S b/lib/el3_runtime/aarch64/cpu_data.S index 2edf22559..2392d6b90 100644 --- a/lib/el3_runtime/aarch64/cpu_data.S +++ b/lib/el3_runtime/aarch64/cpu_data.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -41,7 +41,8 @@ endfunc init_cpu_data_ptr func _cpu_data_by_index mov_imm x1, CPU_DATA_SIZE mul x0, x0, x1 - adr x1, percpu_data + adrp x1, percpu_data + add x1, x1, :lo12:percpu_data add x0, x0, x1 ret endfunc _cpu_data_by_index |