From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Thu, 18 Sep 2014 11:12:17 +0200 Subject: [U-Boot] [PATCH 4/8] ARMv8: PSCI: Add linker section to hold PSCI code In-Reply-To: <1409171401-22616-5-git-send-email-arnab.basu@freescale.com> References: <1409171401-22616-1-git-send-email-arnab.basu@freescale.com> <1409171401-22616-5-git-send-email-arnab.basu@freescale.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Arnab, On Thu, 28 Aug 2014 01:59:57 +0530, Arnab Basu wrote: > A separate linker section makes it possible to keep this code either > in DDR or in some secure memory location provided specifically for the > purpose. > > So far no one is using this section. > > Signed-off-by: Arnab Basu > Reviewed-by: Bhupesh Sharma > Cc: Marc Zyngier > --- > arch/arm/config.mk | 2 +- > arch/arm/cpu/armv8/u-boot.lds | 30 ++++++++++++++++++++++++++++++ > 2 files changed, 31 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/config.mk b/arch/arm/config.mk > index c339e6d..9272e9c 100644 > --- a/arch/arm/config.mk > +++ b/arch/arm/config.mk > @@ -111,7 +111,7 @@ endif > > # limit ourselves to the sections we want in the .bin. > ifdef CONFIG_ARM64 > -OBJCOPYFLAGS += -j .text -j .rodata -j .data -j .u_boot_list -j .rela.dyn > +OBJCOPYFLAGS += -j .text -j .secure_text -j .rodata -j .data -j .u_boot_list -j .rela.dyn > else > OBJCOPYFLAGS += -j .text -j .secure_text -j .rodata -j .hash -j .data -j .got.plt -j .u_boot_list -j .rel.dyn > endif > diff --git a/arch/arm/cpu/armv8/u-boot.lds b/arch/arm/cpu/armv8/u-boot.lds > index 4c12222..bd95fff 100644 > --- a/arch/arm/cpu/armv8/u-boot.lds > +++ b/arch/arm/cpu/armv8/u-boot.lds > @@ -8,6 +8,8 @@ > * SPDX-License-Identifier: GPL-2.0+ > */ > > +#include > + > OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64") > OUTPUT_ARCH(aarch64) > ENTRY(_start) > @@ -23,6 +25,34 @@ SECTIONS > *(.text*) > } > > +#ifdef CONFIG_ARMV8_PSCI > + > +#ifndef CONFIG_ARMV8_SECURE_BASE > +#define CONFIG_ARMV8_SECURE_BASE > +#endif > + > + .__secure_start : { > + . = ALIGN(0x1000); > + *(.__secure_start) > + } > + > + .secure_text CONFIG_ARMV8_SECURE_BASE : > + AT(ADDR(.__secure_start) + SIZEOF(.__secure_start)) > + { > + *(._secure.text) > + } > + > + . = LOADADDR(.__secure_start) + > + SIZEOF(.__secure_start) + > + SIZEOF(.secure_text); > + > + __secure_end_lma = .; > + .__secure_end : AT(__secure_end_lma) { > + *(.__secure_end) > + LONG(0x1d1071c); /* Must output something to reset LMA */ Can you explain in more detail what issue this fixes? > + } > +#endif > + > . = ALIGN(8); > .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } > Amicalement, -- Albert.