3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 Portions copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
5 Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
7 SPDX-License-Identifier: BSD-2-Clause-Patent
13 #include <Library/ArmLib.h>
14 #include <Library/DebugLib.h>
16 #include <Chipset/AArch64.h>
18 #include "AArch64Lib.h"
19 #include "ArmLibPrivate.h"
22 AArch64DataCacheOperation (
23 IN AARCH64_CACHE_OPERATION DataCacheOperation
26 UINTN SavedInterruptState
;
28 SavedInterruptState
= ArmGetInterruptState ();
29 ArmDisableInterrupts ();
31 AArch64AllDataCachesOperation (DataCacheOperation
);
33 ArmDataSynchronizationBarrier ();
35 if (SavedInterruptState
) {
36 ArmEnableInterrupts ();
42 ArmInvalidateDataCache (
46 ASSERT (!ArmMmuEnabled ());
48 ArmDataSynchronizationBarrier ();
49 AArch64DataCacheOperation (ArmInvalidateDataCacheEntryBySetWay
);
54 ArmCleanInvalidateDataCache (
58 ASSERT (!ArmMmuEnabled ());
60 ArmDataSynchronizationBarrier ();
61 AArch64DataCacheOperation (ArmCleanInvalidateDataCacheEntryBySetWay
);
70 ASSERT (!ArmMmuEnabled ());
72 ArmDataSynchronizationBarrier ();
73 AArch64DataCacheOperation (ArmCleanDataCacheEntryBySetWay
);
77 Check whether the CPU supports the GIC system register interface (any version)
79 @return Whether GIC System Register Interface is supported
84 ArmHasGicSystemRegisters (
88 return ((ArmReadIdAA64Pfr0 () & AARCH64_PFR0_GIC
) != 0);
91 /** Checks if CCIDX is implemented.
93 @retval TRUE CCIDX is implemented.
94 @retval FALSE CCIDX is not implemented.
104 Mmfr2
= ArmReadIdAA64Mmfr2 ();
105 return (((Mmfr2
>> 20) & 0xF) == 1) ? TRUE
: FALSE
;