]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/ArmLib/Arm/ArmV7Lib.c
2c4a23e1a1b2a5e183b052716e51598b2d47a19a
[mirror_edk2.git] / ArmPkg / Library / ArmLib / Arm / ArmV7Lib.c
1 /** @file
2
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 Copyright (c) 2011 - 2014, ARM Limited. All rights reserved.
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 #include <Base.h>
11
12 #include <Library/ArmLib.h>
13 #include <Library/DebugLib.h>
14
15 #include <Chipset/ArmV7.h>
16
17 #include "ArmV7Lib.h"
18 #include "ArmLibPrivate.h"
19
20 VOID
21 ArmV7DataCacheOperation (
22 IN ARM_V7_CACHE_OPERATION DataCacheOperation
23 )
24 {
25 UINTN SavedInterruptState;
26
27 SavedInterruptState = ArmGetInterruptState ();
28 ArmDisableInterrupts ();
29
30 ArmV7AllDataCachesOperation (DataCacheOperation);
31
32 ArmDataSynchronizationBarrier ();
33
34 if (SavedInterruptState) {
35 ArmEnableInterrupts ();
36 }
37 }
38
39 VOID
40 EFIAPI
41 ArmInvalidateDataCache (
42 VOID
43 )
44 {
45 ASSERT (!ArmMmuEnabled ());
46
47 ArmDataSynchronizationBarrier ();
48 ArmV7DataCacheOperation (ArmInvalidateDataCacheEntryBySetWay);
49 }
50
51 VOID
52 EFIAPI
53 ArmCleanInvalidateDataCache (
54 VOID
55 )
56 {
57 ASSERT (!ArmMmuEnabled ());
58
59 ArmDataSynchronizationBarrier ();
60 ArmV7DataCacheOperation (ArmCleanInvalidateDataCacheEntryBySetWay);
61 }
62
63 VOID
64 EFIAPI
65 ArmCleanDataCache (
66 VOID
67 )
68 {
69 ASSERT (!ArmMmuEnabled ());
70
71 ArmDataSynchronizationBarrier ();
72 ArmV7DataCacheOperation (ArmCleanDataCacheEntryBySetWay);
73 }