ArmPkg/ArmLib: avoid cache maintenance in PEIMs when executing in place
On some platforms, performing cache maintenance on regions that are backed by NOR flash result in SErrors. Since cache maintenance is unnecessary in that case, create a PEIM specific version that only performs said cache maintenance in its constructor if the module is shadowed in RAM. To avoid performing the cache maintenance if the MMU code is not used to begin with, check that explicitly in the constructor. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Heyi Guo <heyi.guo@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
43
ArmPkg/Library/ArmLib/AArch64/AArch64LibPei.inf
Normal file
43
ArmPkg/Library/ArmLib/AArch64/AArch64LibPei.inf
Normal file
@@ -0,0 +1,43 @@
|
||||
#/** @file
|
||||
#
|
||||
# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
|
||||
# Portions 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 = AArch64Lib
|
||||
FILE_GUID = ef20ddf5-b334-47b3-94cf-52ff44c29138
|
||||
MODULE_TYPE = PEIM
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = ArmLib|PEIM PEI_CORE
|
||||
CONSTRUCTOR = AArch64LibConstructor
|
||||
|
||||
[Sources.AARCH64]
|
||||
AArch64Lib.c
|
||||
AArch64Mmu.c
|
||||
AArch64ArchTimer.c
|
||||
ArmLibSupportV8.S
|
||||
AArch64Support.S
|
||||
AArch64ArchTimerSupport.S
|
||||
|
||||
../Common/AArch64/ArmLibSupport.S
|
||||
../Common/ArmLib.c
|
||||
AArch64PeiLibConstructor.c
|
||||
|
||||
[Packages]
|
||||
ArmPkg/ArmPkg.dec
|
||||
MdePkg/MdePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
MemoryAllocationLib
|
||||
CacheMaintenanceLib
|
Reference in New Issue
Block a user