TianoCore EDK2
master
Loading...
Searching...
No Matches
CapsuleCache.c
Go to the documentation of this file.
1
12
#include "
CapsuleService.h
"
13
14
#include <
Library/CacheMaintenanceLib.h
>
15
25
VOID
26
CapsuleCacheWriteBack
(
27
IN
EFI_PHYSICAL_ADDRESS
ScatterGatherList
28
)
29
{
30
EFI_CAPSULE_BLOCK_DESCRIPTOR
*Desc;
31
32
if
(!
EfiAtRuntime
()) {
33
Desc = (
EFI_CAPSULE_BLOCK_DESCRIPTOR
*)(
UINTN
)ScatterGatherList;
34
do
{
35
WriteBackDataCacheRange
(
36
(VOID *)(
UINTN
)Desc,
37
(
UINTN
)
sizeof
(*Desc)
38
);
39
40
if
(Desc->Length > 0) {
41
WriteBackDataCacheRange
(
42
(VOID *)(
UINTN
)Desc->Union.DataBlock,
43
(
UINTN
)Desc->Length
44
);
45
Desc++;
46
}
else
if
(Desc->Union.ContinuationPointer > 0) {
47
Desc = (
EFI_CAPSULE_BLOCK_DESCRIPTOR
*)(
UINTN
)Desc->Union.ContinuationPointer;
48
}
49
}
while
(Desc->Length > 0 || Desc->Union.ContinuationPointer > 0);
50
51
WriteBackDataCacheRange
(
52
(VOID *)(
UINTN
)Desc,
53
(
UINTN
)
sizeof
(*Desc)
54
);
55
}
56
}
UINTN
UINT64 UINTN
Definition:
ProcessorBind.h:112
WriteBackDataCacheRange
VOID *EFIAPI WriteBackDataCacheRange(IN VOID *Address, IN UINTN Length)
Definition:
ArmCacheMaintenanceLib.c:120
CacheMaintenanceLib.h
CapsuleCacheWriteBack
VOID CapsuleCacheWriteBack(IN EFI_PHYSICAL_ADDRESS ScatterGatherList)
Definition:
CapsuleCache.c:26
CapsuleService.h
IN
#define IN
Definition:
Base.h:279
EFI_PHYSICAL_ADDRESS
UINT64 EFI_PHYSICAL_ADDRESS
Definition:
UefiBaseType.h:50
EfiAtRuntime
BOOLEAN EFIAPI EfiAtRuntime(VOID)
Definition:
RuntimeLib.c:167
EFI_CAPSULE_BLOCK_DESCRIPTOR
Definition:
UefiSpec.h:1654
MdeModulePkg
Universal
CapsuleRuntimeDxe
CapsuleCache.c
Generated on Fri Nov 15 2024 18:01:12 for TianoCore EDK2 by
1.9.6