TianoCore EDK2 master
Loading...
Searching...
No Matches
CapsuleCache.c
Go to the documentation of this file.
1
12#include "CapsuleService.h"
13
15
25VOID
27 IN EFI_PHYSICAL_ADDRESS ScatterGatherList
28 )
29{
31
32 if (!EfiAtRuntime ()) {
33 Desc = (EFI_CAPSULE_BLOCK_DESCRIPTOR *)(UINTN)ScatterGatherList;
34 do {
36 (VOID *)(UINTN)Desc,
37 (UINTN)sizeof (*Desc)
38 );
39
40 if (Desc->Length > 0) {
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
52 (VOID *)(UINTN)Desc,
53 (UINTN)sizeof (*Desc)
54 );
55 }
56}
UINT64 UINTN
VOID *EFIAPI WriteBackDataCacheRange(IN VOID *Address, IN UINTN Length)
VOID CapsuleCacheWriteBack(IN EFI_PHYSICAL_ADDRESS ScatterGatherList)
Definition: CapsuleCache.c:26
#define IN
Definition: Base.h:279
UINT64 EFI_PHYSICAL_ADDRESS
Definition: UefiBaseType.h:50
BOOLEAN EFIAPI EfiAtRuntime(VOID)
Definition: RuntimeLib.c:167