]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c
ArmPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / ArmPkg / Library / ArmLib / AArch64 / AArch64Lib.c
1 /** @file
2
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 Portions copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 #include <Uefi.h>
11 #include <Chipset/AArch64.h>
12 #include <Library/ArmLib.h>
13 #include <Library/BaseLib.h>
14 #include <Library/IoLib.h>
15 #include "AArch64Lib.h"
16 #include "ArmLibPrivate.h"
17
18 VOID
19 AArch64DataCacheOperation (
20 IN AARCH64_CACHE_OPERATION DataCacheOperation
21 )
22 {
23 UINTN SavedInterruptState;
24
25 SavedInterruptState = ArmGetInterruptState ();
26 ArmDisableInterrupts();
27
28 AArch64AllDataCachesOperation (DataCacheOperation);
29
30 ArmDataSynchronizationBarrier ();
31
32 if (SavedInterruptState) {
33 ArmEnableInterrupts ();
34 }
35 }
36
37 VOID
38 EFIAPI
39 ArmInvalidateDataCache (
40 VOID
41 )
42 {
43 ArmDataSynchronizationBarrier ();
44 AArch64DataCacheOperation (ArmInvalidateDataCacheEntryBySetWay);
45 }
46
47 VOID
48 EFIAPI
49 ArmCleanInvalidateDataCache (
50 VOID
51 )
52 {
53 ArmDataSynchronizationBarrier ();
54 AArch64DataCacheOperation (ArmCleanInvalidateDataCacheEntryBySetWay);
55 }
56
57 VOID
58 EFIAPI
59 ArmCleanDataCache (
60 VOID
61 )
62 {
63 ArmDataSynchronizationBarrier ();
64 AArch64DataCacheOperation (ArmCleanDataCacheEntryBySetWay);
65 }