public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	Leif Lindholm <leif.lindholm@linaro.org>
Cc: Laszlo Ersek <lersek@redhat.com>,
	Marc Zyngier <marc.zyngier@arm.com>,
	 "Zhu, Yonghong" <yonghong.zhu@intel.com>,
	"Gao, Liming" <liming.gao@intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH] BaseTools/GCC AARCH64: force disable PIC code generation
Date: Fri, 31 Mar 2017 09:38:48 +0100	[thread overview]
Message-ID: <CAKv+Gu8BF09s7ff6u4QFa_4V7GKK=5Q=1qkELW=T=h17=umXhw@mail.gmail.com> (raw)
In-Reply-To: <20170331083744.3964-1-ard.biesheuvel@linaro.org>

Please disregard the bogus patch below


On 31 March 2017 at 09:37, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> As a security measure, some distro toolchains now default to PIC code
> generation, allowing executables (as opposed to shared libraries) using
> the objects to be built as PIE binaries, which can be loaded at a random
> virtual offset.
>
> However, our ELF to PE/COFF generation code does not deal with the
> resulting relocation types (i.e., GOT based), and so the use of PIC code
> leads to GenFw errors.
>
> Given that
> a) our non-PIC PE/COFF executables are already relocatable,
> b) PIC code leads to all symbol references to be indirected via GOT
>    entries containing absolute addresses, each requiring an entry in the
>    relocation table,
> c) the AArch64 ISA makes it perfectly feasible to built PIE executables
>    from non-PIC code,
>
> there is absolutely no upside to using PIC code for building EDK2 modules,
> and so we're better off simply disabling it unconditionally.
>
> Note that when running under the OS, the GOT has an additional advantage,
> i.e., that all .text/.rodata pages remain clean and so can be shared between
> processes. This does not apply to the UEFI environment, however.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.c            | 67 ----------------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf          | 35 --------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/AArch64/ArmCortexA5xHelper.S | 27 -------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.c            | 84 --------------------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.inf          | 38 ---------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.c              | 41 ----------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.inf            | 27 -------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.S           | 23 ------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm         | 29 -------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.c              | 76 ------------------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.inf            | 37 ---------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.c        | 39 ---------
>  ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf      | 34 --------
>  BaseTools/Conf/tools_def.template                                     |  2 +-
>  14 files changed, 1 insertion(+), 558 deletions(-)
>
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.c b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.c
> deleted file mode 100644
> index e05e8abf3949..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.c
> +++ /dev/null
> @@ -1,67 +0,0 @@
> -/** @file
> -
> -  Copyright (c) 2011-2012, ARM Limited. All rights reserved.
> -
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#include <Base.h>
> -#include <Library/ArmLib.h>
> -#include <Library/ArmCpuLib.h>
> -#include <Library/ArmGenericTimerCounterLib.h>
> -#include <Library/DebugLib.h>
> -#include <Library/PcdLib.h>
> -
> -#include <Chipset/ArmV7.h>
> -
> -#define A15_FEATURE_SMP     (1<<6)
> -
> -VOID
> -ArmCpuSetup (
> -  IN  UINTN         MpId
> -  )
> -{
> -  // Check if Architectural Timer frequency is valid number (should not be 0)
> -  ASSERT (PcdGet32 (PcdArmArchTimerFreqInHz));
> -  ASSERT(ArmIsArchTimerImplemented () != 0);
> -
> -  // Enable SWP instructions
> -  ArmEnableSWPInstruction ();
> -
> -  // Enable program flow prediction, if supported.
> -  ArmEnableBranchPrediction ();
> -
> -  // Note: System Counter frequency can only be set in Secure privileged mode,
> -  // if security extensions are implemented.
> -  ArmGenericTimerSetTimerFreq (PcdGet32 (PcdArmArchTimerFreqInHz));
> -
> -  if (ArmIsMpCore()) {
> -    // Turn on SMP coherency
> -    ArmSetAuxCrBit (A15_FEATURE_SMP);
> -  }
> -
> -}
> -
> -
> -VOID
> -ArmCpuSetupSmpNonSecure (
> -  IN  UINTN         MpId
> -  )
> -{
> -  /*// Make the SCU accessible in Non Secure world
> -  if (ArmPlatformIsPrimaryCore (MpId)) {
> -    ScuBase = ArmGetScuBaseAddress();
> -
> -    // Allow NS access to SCU register
> -    MmioOr32 (ScuBase + A9_SCU_SACR_OFFSET, 0xf);
> -    // Allow NS access to Private Peripherals
> -    MmioOr32 (ScuBase + A9_SCU_SSACR_OFFSET, 0xfff);
> -  }*/
> -}
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf
> deleted file mode 100644
> index bd9a733b46cd..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -#/* @file
> -#  Copyright (c) 2011-2014, ARM Limited. All rights reserved.
> -#
> -#  This program and the accompanying materials
> -#  are licensed and made available under the terms and conditions of the BSD License
> -#  which accompanies this distribution.  The full text of the license may be found at
> -#  http://opensource.org/licenses/bsd-license.php
> -#
> -#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#*/
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = ArmCortexA15Lib
> -  FILE_GUID                      = 501b1c8f-21d5-4ef5-a565-435b7f0aae2d
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = ArmCpuLib
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  ArmPkg/ArmPkg.dec
> -
> -[LibraryClasses]
> -  ArmLib
> -  ArmGenericTimerCounterLib
> -  PcdLib
> -
> -[Sources.common]
> -  ArmCortexA15Lib.c
> -
> -[FixedPcd]
> -  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/AArch64/ArmCortexA5xHelper.S b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/AArch64/ArmCortexA5xHelper.S
> deleted file mode 100644
> index ba3d48f11f6d..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/AArch64/ArmCortexA5xHelper.S
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -#------------------------------------------------------------------------------
> -#
> -# Copyright (c) 2013 - 2014, ARM Limited. All rights reserved.
> -#
> -# This program and the accompanying materials
> -# are licensed and made available under the terms and conditions of the BSD License
> -# which accompanies this distribution.  The full text of the license may be found at
> -# http://opensource.org/licenses/bsd-license.php
> -#
> -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#------------------------------------------------------------------------------
> -
> -#include <AsmMacroIoLibV8.h>
> -
> -ASM_FUNC(ArmReadCpuExCr)
> -  mrs   x0, S3_1_c15_c2_1
> -  ret
> -
> -ASM_FUNC(ArmWriteCpuExCr)
> -  msr   S3_1_c15_c2_1, x0
> -  dsb   sy
> -  isb
> -  ret
> -
> -ASM_FUNCTION_REMOVE_IF_UNREFERENCED
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.c b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.c
> deleted file mode 100644
> index 3d39acd50c04..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.c
> +++ /dev/null
> @@ -1,84 +0,0 @@
> -/** @file
> -
> -  Copyright (c) 2011-2014, ARM Limited. All rights reserved.
> -
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#include <Base.h>
> -#include <Library/ArmLib.h>
> -#include <Library/ArmCpuLib.h>
> -#include <Library/ArmGenericTimerCounterLib.h>
> -#include <Library/DebugLib.h>
> -#include <Library/PcdLib.h>
> -
> -#include <Chipset/ArmCortexA5x.h>
> -
> -VOID
> -ArmCpuSetup (
> -  IN  UINTN         MpId
> -  )
> -{
> -  // Check if Architectural Timer frequency is valid number (should not be 0)
> -  ASSERT (PcdGet32 (PcdArmArchTimerFreqInHz));
> -  ASSERT (ArmIsArchTimerImplemented () != 0);
> -
> -  // Note: System Counter frequency can only be set in Secure privileged mode,
> -  // if security extensions are implemented.
> -  ArmGenericTimerSetTimerFreq (PcdGet32 (PcdArmArchTimerFreqInHz));
> -
> -  if (ArmIsMpCore ()) {
> -    // Turn on SMP coherency
> -    ArmSetCpuExCrBit (A5X_FEATURE_SMP);
> -  }
> -
> -  //
> -  // If CPU is CortexA57 r0p0 apply Errata workarounds
> -  //
> -  if ((ArmReadMidr () & ((ARM_CPU_TYPE_MASK << 4) | ARM_CPU_REV_MASK)) ==
> -                         ((ARM_CPU_TYPE_A57 << 4) | ARM_CPU_REV(0,0))) {
> -
> -    // Errata 806969: DisableLoadStoreWB (1ULL << 49)
> -    // Errata 813420: Execute Data Cache clean as Data Cache clean/invalidate  (1ULL << 44)
> -    // Errata 814670: disable DMB nullification (1ULL << 58)
> -    ArmSetCpuActlrBit ( (1ULL << 49) | (1ULL << 44) | (1ULL << 58) );
> -  }
> -}
> -
> -VOID
> -ArmCpuSetupSmpNonSecure (
> -  IN  UINTN         MpId
> -  )
> -{
> -}
> -
> -VOID
> -EFIAPI
> -ArmSetCpuExCrBit (
> -  IN  UINT64    Bits
> -  )
> -{
> -  UINT64 Value;
> -  Value =  ArmReadCpuExCr ();
> -  Value |= Bits;
> -  ArmWriteCpuExCr (Value);
> -}
> -
> -VOID
> -EFIAPI
> -ArmUnsetCpuExCrBit (
> -  IN  UINT64    Bits
> -  )
> -{
> -  UINT64 Value;
> -  Value = ArmReadCpuExCr ();
> -  Value &= ~Bits;
> -  ArmWriteCpuExCr (Value);
> -}
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.inf b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.inf
> deleted file mode 100644
> index e27022032624..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.inf
> +++ /dev/null
> @@ -1,38 +0,0 @@
> -#/* @file
> -#  Copyright (c) 2011-2014, ARM Limited. All rights reserved.
> -#
> -#  This program and the accompanying materials
> -#  are licensed and made available under the terms and conditions of the BSD License
> -#  which accompanies this distribution.  The full text of the license may be found at
> -#  http://opensource.org/licenses/bsd-license.php
> -#
> -#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#*/
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = ArmCortexA5xLib
> -  FILE_GUID                      = 08107938-85d8-4967-ba65-b673f708fcb2
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = ArmCpuLib
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  ArmPkg/ArmPkg.dec
> -
> -[LibraryClasses]
> -  ArmLib
> -  ArmGenericTimerCounterLib
> -  PcdLib
> -
> -[Sources.common]
> -  ArmCortexA5xLib.c
> -
> -[Sources.AARCH64]
> -  AArch64/ArmCortexA5xHelper.S | GCC
> -
> -[FixedPcd]
> -  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.c b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.c
> deleted file mode 100644
> index e0ba1fab8d90..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.c
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -/** @file
> -
> -  Copyright (c) 2011, ARM Limited. All rights reserved.
> -
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#include <Base.h>
> -#include <Library/ArmLib.h>
> -#include <Library/ArmCpuLib.h>
> -#include <Library/DebugLib.h>
> -
> -#include <Chipset/ArmV7.h>
> -
> -VOID
> -ArmCpuSetup (
> -  IN  UINTN         MpId
> -  )
> -{
> -  // Enable SWP instructions
> -  ArmEnableSWPInstruction ();
> -
> -  // Enable program flow prediction, if supported.
> -  ArmEnableBranchPrediction ();
> -}
> -
> -VOID
> -ArmCpuSetupSmpNonSecure (
> -  IN  UINTN         MpId
> -  )
> -{
> -  // The CortexA8 is a Unicore CPU. We must not initialize SMP for Non Secure Accesses
> -  ASSERT(0);
> -}
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.inf b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.inf
> deleted file mode 100644
> index 890958a7e395..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.inf
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -#/* @file
> -#  Copyright (c) 2011, ARM Limited. All rights reserved.
> -#
> -#  This program and the accompanying materials
> -#  are licensed and made available under the terms and conditions of the BSD License
> -#  which accompanies this distribution.  The full text of the license may be found at
> -#  http://opensource.org/licenses/bsd-license.php
> -#
> -#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#*/
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = ArmCortexA8Lib
> -  FILE_GUID                      = 34b5745e-f575-44ce-ba2e-df0886807c16
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = ArmCpuLib
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  ArmPkg/ArmPkg.dec
> -
> -[Sources.common]
> -  ArmCortexA8Lib.c
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.S b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.S
> deleted file mode 100644
> index 365d57d7e8bd..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.S
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -//
> -//  Copyright (c) 2011-2012, ARM Limited. All rights reserved.
> -//
> -//  This program and the accompanying materials
> -//  are licensed and made available under the terms and conditions of the BSD License
> -//  which accompanies this distribution.  The full text of the license may be found at
> -//  http://opensource.org/licenses/bsd-license.php
> -//
> -//  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -//  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -//
> -//
> -
> -#include <AsmMacroIoLib.h>
> -
> -// IN None
> -// OUT r0 = SCU Base Address
> -ASM_FUNC(ArmGetScuBaseAddress)
> -  // Read Configuration Base Address Register. ArmCBar cannot be called to get
> -  // the Configuration BAR as a stack is not necessary setup. The SCU is at the
> -  // offset 0x0000 from the Private Memory Region.
> -  mrc   p15, 4, r0, c15, c0, 0
> -  bx  lr
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm
> deleted file mode 100644
> index 882f25b780cd..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -//
> -//  Copyright (c) 2011-2012, ARM Limited. All rights reserved.
> -//
> -//  This program and the accompanying materials
> -//  are licensed and made available under the terms and conditions of the BSD License
> -//  which accompanies this distribution.  The full text of the license may be found at
> -//  http://opensource.org/licenses/bsd-license.php
> -//
> -//  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -//  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -//
> -//
> -
> -  INCLUDE AsmMacroExport.inc
> -  INCLUDE AsmMacroIoLib.inc
> -
> -
> -  PRESERVE8
> -
> -// IN None
> -// OUT r0 = SCU Base Address
> - RVCT_ASM_EXPORT ArmGetScuBaseAddress
> -  // Read Configuration Base Address Register. ArmCBar cannot be called to get
> -  // the Configuration BAR as a stack is not necessary setup. The SCU is at the
> -  // offset 0x0000 from the Private Memory Region.
> -  mrc   p15, 4, r0, c15, c0, 0
> -  bx  lr
> -
> -  END
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.c b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.c
> deleted file mode 100644
> index 4fc6a08b9a94..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.c
> +++ /dev/null
> @@ -1,76 +0,0 @@
> -/** @file
> -
> -  Copyright (c) 2011-2012, ARM Limited. All rights reserved.
> -
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#include <Base.h>
> -#include <Library/ArmLib.h>
> -#include <Library/ArmCpuLib.h>
> -#include <Library/ArmPlatformLib.h>
> -#include <Library/IoLib.h>
> -#include <Library/PcdLib.h>
> -
> -#include <Chipset/ArmCortexA9.h>
> -
> -VOID
> -ArmEnableScu (
> -  VOID
> -  )
> -{
> -  INTN          ScuBase;
> -
> -  ScuBase = ArmGetScuBaseAddress();
> -
> -  // Invalidate all: write -1 to SCU Invalidate All register
> -  MmioWrite32(ScuBase + A9_SCU_INVALL_OFFSET, 0xffffffff);
> -  // Enable SCU
> -  MmioWrite32(ScuBase + A9_SCU_CONTROL_OFFSET, 0x1);
> -}
> -
> -VOID
> -ArmCpuSetup (
> -  IN  UINTN         MpId
> -  )
> -{
> -  // Enable SWP instructions
> -  ArmEnableSWPInstruction ();
> -
> -  // Enable program flow prediction, if supported.
> -  ArmEnableBranchPrediction ();
> -
> -  // If MPCore then Enable the SCU
> -  if (ArmIsMpCore()) {
> -    // Signals the Cortex-A9 processor is taking part in coherency
> -    ArmSetAuxCrBit (A9_FEATURE_SMP);
> -
> -    ArmEnableScu ();
> -  }
> -}
> -
> -
> -VOID
> -ArmCpuSetupSmpNonSecure (
> -  IN  UINTN         MpId
> -  )
> -{
> -  INTN          ScuBase;
> -
> -  // Make the SCU accessible in Non Secure world
> -  if (ArmPlatformIsPrimaryCore (MpId)) {
> -    ScuBase = ArmGetScuBaseAddress();
> -
> -    // Allow NS access to SCU register
> -    MmioOr32 (ScuBase + A9_SCU_SACR_OFFSET, 0xf);
> -    // Allow NS access to Private Peripherals
> -    MmioOr32 (ScuBase + A9_SCU_SSACR_OFFSET, 0xfff);
> -  }
> -}
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.inf b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.inf
> deleted file mode 100644
> index 236b0bcb6ca7..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.inf
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -#/* @file
> -#  Copyright (c) 2011-2013, ARM Limited. All rights reserved.
> -#
> -#  This program and the accompanying materials
> -#  are licensed and made available under the terms and conditions of the BSD License
> -#  which accompanies this distribution.  The full text of the license may be found at
> -#  http://opensource.org/licenses/bsd-license.php
> -#
> -#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#*/
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = ArmCortexA9Lib
> -  FILE_GUID                      = c9709ea3-1beb-4806-889a-8a1d5e5e1697
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = ArmCpuLib
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  ArmPkg/ArmPkg.dec
> -  ArmPlatformPkg/ArmPlatformPkg.dec
> -
> -[LibraryClasses]
> -  ArmLib
> -  ArmPlatformLib
> -  IoLib
> -  PcdLib
> -
> -[Sources.common]
> -  ArmCortexA9Lib.c
> -  ArmCortexA9Helper.asm     | RVCT
> -  ArmCortexA9Helper.S       | GCC
> -
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.c b/ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.c
> deleted file mode 100644
> index ee2c057fe099..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.c
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -/** @file
> -
> -  Copyright (c) 2011 - 2013, ARM Limited. All rights reserved.
> -
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#include <Base.h>
> -#include <Library/ArmCpuLib.h>
> -#include <Library/ArmGenericTimerCounterLib.h>
> -#include <Library/PcdLib.h>
> -
> -#include <Chipset/AArch64.h>
> -
> -VOID
> -ArmCpuSetup (
> -  IN  UINTN         MpId
> -  )
> -{
> -  // Note: System Counter frequency can only be set in Secure privileged mode,
> -  // if security extensions are implemented.
> -  ArmGenericTimerSetTimerFreq (PcdGet32 (PcdArmArchTimerFreqInHz));
> -}
> -
> -
> -VOID
> -ArmCpuSetupSmpNonSecure (
> -  IN  UINTN         MpId
> -  )
> -{
> -  // Nothing to do
> -}
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf b/ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf
> deleted file mode 100644
> index 1c8122082d9d..000000000000
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -#/* @file
> -#  Copyright (c) 2011 - 2014, ARM Limited. All rights reserved.
> -#
> -#  This program and the accompanying materials
> -#  are licensed and made available under the terms and conditions of the BSD License
> -#  which accompanies this distribution.  The full text of the license may be found at
> -#  http://opensource.org/licenses/bsd-license.php
> -#
> -#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#*/
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = ArmCortexAEMv8Lib
> -  FILE_GUID                      = 8ab5a7e3-86b1-4dd3-a092-09ee801e774b
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = ArmCpuLib
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  ArmPkg/ArmPkg.dec
> -
> -[LibraryClasses]
> -  ArmGenericTimerCounterLib
> -  PcdLib
> -
> -[Sources.common]
> -  ArmCortexAEMv8Lib.c
> -
> -[FixedPcd]
> -  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz
> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
> index 0aabdeb2d973..2c5cd5808912 100755
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -4341,7 +4341,7 @@ DEFINE GCC_X64_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-ad
>  DEFINE GCC_IPF_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency
>  DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -mthumb -mfloat-abi=soft
>  DEFINE GCC_ARM_CC_XIPFLAGS         = -mno-unaligned-access
> -DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char  -ffunction-sections -fdata-sections -fno-builtin -Wno-address -fno-asynchronous-unwind-tables
> +DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char  -ffunction-sections -fdata-sections -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -fno-pic
>  DEFINE GCC_AARCH64_CC_XIPFLAGS     = -mstrict-align
>  DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib --pie
>  DEFINE GCC_DLINK2_FLAGS_COMMON     = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
> --
> 2.9.3
>


      reply	other threads:[~2017-03-31  8:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-31  8:37 [PATCH] BaseTools/GCC AARCH64: force disable PIC code generation Ard Biesheuvel
2017-03-31  8:38 ` Ard Biesheuvel [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKv+Gu8BF09s7ff6u4QFa_4V7GKK=5Q=1qkELW=T=h17=umXhw@mail.gmail.com' \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox