Suspiciously, ArmLib's INF does not contain a [LibraryClasses] section at all, but it turns out that all the library includes it contains (except for ArmLib.h itself) are actually bogus so let's just drop all of them. While at it, replace <Uefi.h> with the more accurate <Base.h> for a BASE type module, and put the includes in a consistent order. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
67 lines
1.2 KiB
C
67 lines
1.2 KiB
C
/** @file
|
|
|
|
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
|
Portions copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#include <Base.h>
|
|
|
|
#include <Library/ArmLib.h>
|
|
|
|
#include <Chipset/AArch64.h>
|
|
|
|
#include "AArch64Lib.h"
|
|
#include "ArmLibPrivate.h"
|
|
|
|
VOID
|
|
AArch64DataCacheOperation (
|
|
IN AARCH64_CACHE_OPERATION DataCacheOperation
|
|
)
|
|
{
|
|
UINTN SavedInterruptState;
|
|
|
|
SavedInterruptState = ArmGetInterruptState ();
|
|
ArmDisableInterrupts();
|
|
|
|
AArch64AllDataCachesOperation (DataCacheOperation);
|
|
|
|
ArmDataSynchronizationBarrier ();
|
|
|
|
if (SavedInterruptState) {
|
|
ArmEnableInterrupts ();
|
|
}
|
|
}
|
|
|
|
VOID
|
|
EFIAPI
|
|
ArmInvalidateDataCache (
|
|
VOID
|
|
)
|
|
{
|
|
ArmDataSynchronizationBarrier ();
|
|
AArch64DataCacheOperation (ArmInvalidateDataCacheEntryBySetWay);
|
|
}
|
|
|
|
VOID
|
|
EFIAPI
|
|
ArmCleanInvalidateDataCache (
|
|
VOID
|
|
)
|
|
{
|
|
ArmDataSynchronizationBarrier ();
|
|
AArch64DataCacheOperation (ArmCleanInvalidateDataCacheEntryBySetWay);
|
|
}
|
|
|
|
VOID
|
|
EFIAPI
|
|
ArmCleanDataCache (
|
|
VOID
|
|
)
|
|
{
|
|
ArmDataSynchronizationBarrier ();
|
|
AArch64DataCacheOperation (ArmCleanDataCacheEntryBySetWay);
|
|
}
|