]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c
ArmPkg/ArmLib: add ArmHasGicSystemRegisters () helper function
[mirror_edk2.git] / ArmPkg / Library / ArmLib / AArch64 / AArch64Lib.c
... / ...
CommitLineData
1/** @file\r
2\r
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
4 Portions copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>\r
5 Copyright (c) 2020, NUVIA Inc. All rights reserved.<BR>\r
6\r
7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
8\r
9**/\r
10\r
11#include <Base.h>\r
12\r
13#include <Library/ArmLib.h>\r
14#include <Library/DebugLib.h>\r
15\r
16#include <Chipset/AArch64.h>\r
17\r
18#include "AArch64Lib.h"\r
19#include "ArmLibPrivate.h"\r
20\r
21VOID\r
22AArch64DataCacheOperation (\r
23 IN AARCH64_CACHE_OPERATION DataCacheOperation\r
24 )\r
25{\r
26 UINTN SavedInterruptState;\r
27\r
28 SavedInterruptState = ArmGetInterruptState ();\r
29 ArmDisableInterrupts();\r
30\r
31 AArch64AllDataCachesOperation (DataCacheOperation);\r
32\r
33 ArmDataSynchronizationBarrier ();\r
34\r
35 if (SavedInterruptState) {\r
36 ArmEnableInterrupts ();\r
37 }\r
38}\r
39\r
40VOID\r
41EFIAPI\r
42ArmInvalidateDataCache (\r
43 VOID\r
44 )\r
45{\r
46 ASSERT (!ArmMmuEnabled ());\r
47\r
48 ArmDataSynchronizationBarrier ();\r
49 AArch64DataCacheOperation (ArmInvalidateDataCacheEntryBySetWay);\r
50}\r
51\r
52VOID\r
53EFIAPI\r
54ArmCleanInvalidateDataCache (\r
55 VOID\r
56 )\r
57{\r
58 ASSERT (!ArmMmuEnabled ());\r
59\r
60 ArmDataSynchronizationBarrier ();\r
61 AArch64DataCacheOperation (ArmCleanInvalidateDataCacheEntryBySetWay);\r
62}\r
63\r
64VOID\r
65EFIAPI\r
66ArmCleanDataCache (\r
67 VOID\r
68 )\r
69{\r
70 ASSERT (!ArmMmuEnabled ());\r
71\r
72 ArmDataSynchronizationBarrier ();\r
73 AArch64DataCacheOperation (ArmCleanDataCacheEntryBySetWay);\r
74}\r
75\r
76/**\r
77 Check whether the CPU supports the GIC system register interface (any version)\r
78\r
79 @return Whether GIC System Register Interface is supported\r
80\r
81**/\r
82BOOLEAN\r
83EFIAPI\r
84ArmHasGicSystemRegisters (\r
85 VOID\r
86 )\r
87{\r
88 return ((ArmReadIdPfr0 () & AARCH64_PFR0_GIC) != 0);\r
89}\r