On ARM, manipulating live page tables is cumbersome since the architecture mandates the use of break-before-make, i.e., replacing a block entry with a table entry requires an intermediate step via an invalid entry, or TLB conflicts may occur. Since it is not generally feasible to decide in the page table manipulation routines whether such an invalid entry will result in those routines themselves to become unavailable, use a function that is callable with the MMU off (i.e., a leaf function that does not access the stack) to perform the change of a block entry into a table entry. Note that the opposite should never occur, i.e., table entries are never coalesced into block entries. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Mark Rutland <mark.rutland@arm.com>
47 lines
1.3 KiB
INI
47 lines
1.3 KiB
INI
#/** @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 = BASE
|
|
VERSION_STRING = 1.0
|
|
LIBRARY_CLASS = ArmLib
|
|
CONSTRUCTOR = AArch64LibConstructor
|
|
|
|
[Sources.AARCH64]
|
|
AArch64Lib.c
|
|
AArch64Mmu.c
|
|
AArch64ArchTimer.c
|
|
ArmLibSupportV8.S
|
|
AArch64Support.S
|
|
AArch64ArchTimerSupport.S
|
|
|
|
../Common/AArch64/ArmLibSupport.S
|
|
../Common/ArmLib.c
|
|
AArch64LibConstructor.c
|
|
|
|
[Packages]
|
|
ArmPkg/ArmPkg.dec
|
|
MdePkg/MdePkg.dec
|
|
|
|
[LibraryClasses]
|
|
MemoryAllocationLib
|
|
CacheMaintenanceLib
|
|
|
|
[Protocols]
|
|
gEfiCpuArchProtocolGuid
|