22#if defined (MDE_CPU_IA32)
34} BASE_LIBRARY_JUMP_BUFFER;
36#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 4
40#if defined (MDE_CPU_X64)
58} BASE_LIBRARY_JUMP_BUFFER;
60#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
64#if defined (MDE_CPU_EBC)
74} BASE_LIBRARY_JUMP_BUFFER;
76#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
80#if defined (MDE_CPU_AARCH64)
106} BASE_LIBRARY_JUMP_BUFFER;
108#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
127#define ARM_ID_AA64ISAR0_EL1_AES_SHIFT (4U)
128#define ARM_ID_AA64ISAR0_EL1_SHA1_SHIFT (8U)
129#define ARM_ID_AA64ISAR0_EL1_SHA2_SHIFT (12U)
130#define ARM_ID_AA64ISAR0_EL1_CRC32_SHIFT (16U)
131#define ARM_ID_AA64ISAR0_EL1_ATOMIC_SHIFT (20U)
132#define ARM_ID_AA64ISAR0_EL1_RDM_SHIFT (28U)
133#define ARM_ID_AA64ISAR0_EL1_SHA3_SHIFT (32U)
134#define ARM_ID_AA64ISAR0_EL1_SM3_SHIFT (36U)
135#define ARM_ID_AA64ISAR0_EL1_SM4_SHIFT (40U)
136#define ARM_ID_AA64ISAR0_EL1_DP_SHIFT (44U)
137#define ARM_ID_AA64ISAR0_EL1_FHM_SHIFT (48U)
138#define ARM_ID_AA64ISAR0_EL1_TS_SHIFT (52U)
139#define ARM_ID_AA64ISAR0_EL1_TLB_SHIFT (56U)
140#define ARM_ID_AA64ISAR0_EL1_RNDR_SHIFT (60U)
145#define ARM_ID_AA64ISAR0_EL1_AES_MASK (0xFU)
146#define ARM_ID_AA64ISAR0_EL1_SHA1_MASK (0xFU)
147#define ARM_ID_AA64ISAR0_EL1_SHA2_MASK (0xFU)
148#define ARM_ID_AA64ISAR0_EL1_CRC32_MASK (0xFU)
149#define ARM_ID_AA64ISAR0_EL1_ATOMIC_MASK (0xFU)
150#define ARM_ID_AA64ISAR0_EL1_RDM_MASK (0xFU)
151#define ARM_ID_AA64ISAR0_EL1_SHA3_MASK (0xFU)
152#define ARM_ID_AA64ISAR0_EL1_SM3_MASK (0xFU)
153#define ARM_ID_AA64ISAR0_EL1_SM4_MASK (0xFU)
154#define ARM_ID_AA64ISAR0_EL1_DP_MASK (0xFU)
155#define ARM_ID_AA64ISAR0_EL1_FHM_MASK (0xFU)
156#define ARM_ID_AA64ISAR0_EL1_TS_MASK (0xFU)
157#define ARM_ID_AA64ISAR0_EL1_TLB_MASK (0xFU)
158#define ARM_ID_AA64ISAR0_EL1_RNDR_MASK (0xFU)
163#define ARM_ID_AA64ISAR0_EL1_AES_FEAT_AES_MASK (0x1U)
164#define ARM_ID_AA64ISAR0_EL1_AES_FEAT_PMULL_MASK (0x2U)
165#define ARM_ID_AA64ISAR0_EL1_SHA1_FEAT_SHA1_MASK (0x1U)
166#define ARM_ID_AA64ISAR0_EL1_SHA2_FEAT_SHA256_MASK (0x1U)
167#define ARM_ID_AA64ISAR0_EL1_SHA2_FEAT_SHA512_MASK (0x2U)
168#define ARM_ID_AA64ISAR0_EL1_CRC32_HAVE_CRC32_MASK (0x1U)
169#define ARM_ID_AA64ISAR0_EL1_ATOMIC_FEAT_LSE_MASK (0x2U)
170#define ARM_ID_AA64ISAR0_EL1_RDM_FEAT_RDM_MASK (0x1U)
171#define ARM_ID_AA64ISAR0_EL1_SHA3_FEAT_SHA3_MASK (0x1U)
172#define ARM_ID_AA64ISAR0_EL1_SM3_FEAT_SM3_MASK (0x1U)
173#define ARM_ID_AA64ISAR0_EL1_SM4_FEAT_SM4_MASK (0x1U)
174#define ARM_ID_AA64ISAR0_EL1_DP_FEAT_DOTPROD_MASK (0x1U)
175#define ARM_ID_AA64ISAR0_EL1_FHM_FEAT_FHM_MASK (0x1U)
176#define ARM_ID_AA64ISAR0_EL1_TS_FEAT_FLAGM_MASK (0x1U)
177#define ARM_ID_AA64ISAR0_EL1_TS_FEAT_FLAGM2_MASK (0x2U)
178#define ARM_ID_AA64ISAR0_EL1_TLB_FEAT_TLBIOS_MASK (0x1U)
179#define ARM_ID_AA64ISAR0_EL1_TLB_FEAT_TLBIRANGE_MASK (0x2U)
180#define ARM_ID_AA64ISAR0_EL1_RNDR_FEAT_RNG_MASK (0x1U)
192ArmReadIdAA64Isar0Reg (
198#if defined (MDE_CPU_RISCV64)
217} BASE_LIBRARY_JUMP_BUFFER;
219#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
222RiscVSetSupervisorScratch (
227RiscVGetSupervisorScratch (
232RiscVSetSupervisorStvec (
237RiscVGetSupervisorStvec (
242RiscVGetSupervisorTrapCause (
247RiscVSetSupervisorAddressTranslationRegister (
252RiscVGetSupervisorAddressTranslationRegister (
262RiscVSetSupervisorTimeCompareRegister (
267RiscVEnableTimerInterrupt (
272RiscVDisableTimerInterrupt (
277RiscVClearPendingTimerInterrupt (
287RiscVInvalidateInstCacheFenceAsm (
297RiscVInvalidateDataCacheFenceAsm (
308RiscVCpuCacheFlushCmoAsm (
320RiscVCpuCacheCleanCmoAsm (
330RiscVCpuCacheInvalCmoAsm (
336#if defined (MDE_CPU_LOONGARCH64)
353} BASE_LIBRARY_JUMP_BUFFER;
355#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
363SetExceptionBaseAddress (
383EnableLocalInterrupts (
393DisableLocalInterrupts (
417AsmReadStableCounter (
664 OUT CHAR16 *Destination,
701 OUT CHAR16 *Destination,
739 IN OUT CHAR16 *Destination,
779 IN OUT CHAR16 *Destination,
832 OUT CHAR16 **EndPointer OPTIONAL,
883 OUT CHAR16 **EndPointer OPTIONAL,
939 OUT CHAR16 **EndPointer OPTIONAL,
995 OUT CHAR16 **EndPointer OPTIONAL,
1072 OUT CHAR8 *Destination,
1106 OUT CHAR8 *Destination,
1141 IN OUT CHAR8 *Destination,
1178 IN OUT CHAR8 *Destination,
1229 OUT CHAR8 **EndPointer OPTIONAL,
1278 OUT CHAR8 **EndPointer OPTIONAL,
1331 OUT CHAR8 **EndPointer OPTIONAL,
1384 OUT CHAR8 **EndPointer OPTIONAL,
1506 IN CONST CHAR16 *SecondString,
1758 OUT CHAR16 **EndPointer OPTIONAL,
1760 OUT UINT8 *PrefixLength OPTIONAL
1808 OUT CHAR16 **EndPointer OPTIONAL,
1810 OUT UINT8 *PrefixLength OPTIONAL
1813#define GUID_STRING_LENGTH 36
1950 OUT CHAR8 *Destination,
2002 OUT CHAR8 *Destination,
2395 OUT CHAR8 **EndPointer OPTIONAL,
2397 OUT UINT8 *PrefixLength OPTIONAL
2443 OUT CHAR8 **EndPointer OPTIONAL,
2445 OUT UINT8 *PrefixLength OPTIONAL
2575 OUT CHAR16 *Destination,
2626 OUT CHAR16 *Destination,
2695 OUT CHAR8 *Destination OPTIONAL,
2784 IN CONST CHAR8 *Source OPTIONAL,
2786 OUT UINT8 *Destination OPTIONAL,
2884#define INITIALIZE_LIST_HEAD_VARIABLE(ListHead) {&(ListHead), &(ListHead)}
2893#define BASE_LIST_FOR_EACH(Entry, ListHead) \
2894 for(Entry = (ListHead)->ForwardLink; Entry != (ListHead); Entry = Entry->ForwardLink)
2909#define BASE_LIST_FOR_EACH_SAFE(Entry, NextEntry, ListHead) \
2910 for(Entry = (ListHead)->ForwardLink, NextEntry = Entry->ForwardLink;\
2911 Entry != (ListHead); Entry = NextEntry, NextEntry = Entry->ForwardLink)
3649 IN UINT64 Multiplicand,
3650 IN UINT32 Multiplier
3670 IN UINT64 Multiplicand,
3671 IN UINT64 Multiplier
3691 IN INT64 Multiplicand,
3765 OUT UINT32 *Remainder OPTIONAL
3792 OUT UINT64 *Remainder OPTIONAL
3823 OUT INT64 *Remainder OPTIONAL
5040 IN UINT16 InitialValue
5046#define CRC16ANSI_INIT 0xffff
5062 IN UINT32 InitialValue
5079 IN UINT16 InitialValue
5137 OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer
5159 IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
5241 IN BOOLEAN InterruptState
5290 IN VOID *Context1 OPTIONAL,
5291 IN VOID *Context2 OPTIONAL,
5411#if defined (MDE_CPU_X64)
5416 PvalidatePageSize4K = 0,
5417 PvalidatePageSize2MB,
5418} PVALIDATE_PAGE_SIZE;
5423#define PVALIDATE_RET_SUCCESS 0
5424#define PVALIDATE_RET_FAIL_INPUT 1
5425#define PVALIDATE_RET_SIZE_MISMATCH 6
5430#define PVALIDATE_RET_NO_RMPUPDATE 255
5455 IN PVALIDATE_PAGE_SIZE PageSize,
5456 IN BOOLEAN Validate,
5457 IN PHYSICAL_ADDRESS Address
5463#define RMPADJUST_VMPL_MAX 3
5464#define RMPADJUST_VMPL_MASK 0xFF
5465#define RMPADJUST_VMPL_SHIFT 0
5466#define RMPADJUST_PERMISSION_MASK_MASK 0xFF
5467#define RMPADJUST_PERMISSION_MASK_SHIFT 8
5468#define RMPADJUST_VMSA_PAGE_BIT BIT16
5497#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
5505 UINT32 Reserved_0 : 1;
5507 UINT32 Reserved_1 : 1;
5509 UINT32 Reserved_2 : 1;
5518 UINT32 Reserved_3 : 1;
5531 UINT32 Reserved_0 : 1;
5533 UINT32 Reserved_1 : 1;
5535 UINT32 Reserved_2 : 1;
5544 UINT32 Reserved_3 : 1;
5551 UINT32 Reserved_4 : 10;
5569 UINT32 Reserved_0 : 10;
5571 UINT32 Reserved_1 : 1;
5573 UINT32 Reserved_2 : 10;
5600 UINT32 OSXMMEXCPT : 1;
5607 UINT32 Reserved_3 : 1;
5608 UINT32 FSGSBASE : 1;
5611 UINT32 Reserved_4 : 1;
5615 UINT32 Reserved_5 : 9;
5625 UINT32 LimitLow : 16;
5626 UINT32 BaseLow : 16;
5632 UINT32 LimitHigh : 4;
5637 UINT32 BaseHigh : 8;
5640} IA32_SEGMENT_DESCRIPTOR;
5652#define IA32_IDT_GATE_TYPE_TASK 0x85
5653#define IA32_IDT_GATE_TYPE_INTERRUPT_16 0x86
5654#define IA32_IDT_GATE_TYPE_TRAP_16 0x87
5655#define IA32_IDT_GATE_TYPE_INTERRUPT_32 0x8E
5656#define IA32_IDT_GATE_TYPE_TRAP_32 0x8F
5658#define IA32_GDT_TYPE_TSS 0x9
5659#define IA32_GDT_ALIGNMENT 8
5661 #if defined (MDE_CPU_IA32)
5667 UINT32 OffsetLow : 16;
5668 UINT32 Selector : 16;
5669 UINT32 Reserved_0 : 8;
5670 UINT32 GateType : 8;
5671 UINT32 OffsetHigh : 16;
5674} IA32_IDT_GATE_DESCRIPTOR;
5681 UINT16 PreviousTaskLink;
5715 UINT16 LDTSegmentSelector;
5718 UINT16 IOMapBaseAddress;
5719} IA32_TASK_STATE_SEGMENT;
5723 UINT32 LimitLow : 16;
5724 UINT32 BaseLow : 16;
5727 UINT32 Reserved_43 : 1;
5730 UINT32 LimitHigh : 4;
5732 UINT32 Reserved_52 : 2;
5734 UINT32 BaseHigh : 8;
5737} IA32_TSS_DESCRIPTOR;
5742 #if defined (MDE_CPU_X64)
5748 UINT32 OffsetLow : 16;
5749 UINT32 Selector : 16;
5750 UINT32 Reserved_0 : 8;
5751 UINT32 GateType : 8;
5752 UINT32 OffsetHigh : 16;
5753 UINT32 OffsetUpper : 32;
5754 UINT32 Reserved_1 : 32;
5760} IA32_IDT_GATE_DESCRIPTOR;
5774 UINT16 Reserved_100;
5775 UINT16 IOMapBaseAddress;
5776} IA32_TASK_STATE_SEGMENT;
5780 UINT32 LimitLow : 16;
5781 UINT32 BaseLow : 16;
5782 UINT32 BaseMidl : 8;
5784 UINT32 Reserved_43 : 1;
5787 UINT32 LimitHigh : 4;
5789 UINT32 Reserved_52 : 2;
5791 UINT32 BaseMidh : 8;
5792 UINT32 BaseHigh : 32;
5793 UINT32 Reserved_96 : 32;
5799} IA32_TSS_DESCRIPTOR;
5865 IA32_EFLAGS32 EFLAGS;
5881 IA32_REGISTER_SET *RealModeState;
5882 VOID *RealModeBuffer;
5883 UINT32 RealModeBufferSize;
5884 UINT32 ThunkAttributes;
5887#define THUNK_ATTRIBUTE_BIG_REAL_MODE 0x00000001
5888#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 0x00000002
5889#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL 0x00000004
5903typedef VOID (X86_ASSEMBLY_PATCH_LABEL) (
5936 OUT UINT32 *Eax OPTIONAL,
5937 OUT UINT32 *Ebx OPTIONAL,
5938 OUT UINT32 *Ecx OPTIONAL,
5939 OUT UINT32 *Edx OPTIONAL
5979 OUT UINT32 *Eax OPTIONAL,
5980 OUT UINT32 *Ebx OPTIONAL,
5981 OUT UINT32 *Ecx OPTIONAL,
5982 OUT UINT32 *Edx OPTIONAL
7143 OUT IA32_DESCRIPTOR *Gdtr
7160 IN CONST IA32_DESCRIPTOR *Gdtr
7177 OUT IA32_DESCRIPTOR *Idtr
7194 IN CONST IA32_DESCRIPTOR *Idtr
7243 OUT IA32_FX_BUFFER *Buffer
7263 IN CONST IA32_FX_BUFFER *Buffer
7671 IN VOID *Context1 OPTIONAL,
7672 IN VOID *Context2 OPTIONAL,
7714 IN VOID *Context1 OPTIONAL,
7715 IN VOID *Context2 OPTIONAL,
7755 IN UINT64 EntryPoint,
7756 IN UINT64 Context1 OPTIONAL,
7757 IN UINT64 Context2 OPTIONAL,
7795 IN UINT32 EntryPoint,
7796 IN UINT32 Context1 OPTIONAL,
7797 IN UINT32 Context2 OPTIONAL,
7829 OUT UINT32 *RealModeBufferSize,
7830 OUT UINT32 *ExtraStackSize
7850 IN OUT THUNK_CONTEXT *ThunkContext
7909 IN OUT THUNK_CONTEXT *ThunkContext
7935 IN OUT THUNK_CONTEXT *ThunkContext
8102 IN OUT SVSM_CALL_DATA *SvsmCallData
8142 OUT X86_ASSEMBLY_PATCH_LABEL *InstructionEnd,
8143 IN UINT64 PatchValue,
VOID EFIAPI AsmWriteMm3(IN UINT64 Value)
UINT64 EFIAPI AsmReadMm7(VOID)
UINTN EFIAPI AsmReadEflags(VOID)
UINT64 EFIAPI AsmReadTsc(VOID)
VOID EFIAPI AsmWriteMm7(IN UINT64 Value)
UINT64 EFIAPI AsmReadMm2(VOID)
UINT64 EFIAPI AsmReadMm5(VOID)
VOID EFIAPI AsmWriteMm5(IN UINT64 Value)
UINT64 EFIAPI AsmReadMm1(VOID)
VOID EFIAPI AsmWriteMm6(IN UINT64 Value)
VOID EFIAPI AsmWriteMm0(IN UINT64 Value)
UINT64 EFIAPI AsmReadMm3(VOID)
VOID EFIAPI AsmWriteMm2(IN UINT64 Value)
UINT64 EFIAPI AsmReadMm6(VOID)
VOID EFIAPI AsmWriteMm4(IN UINT64 Value)
UINT64 EFIAPI AsmReadMm0(VOID)
UINT64 EFIAPI AsmReadMm4(VOID)
VOID EFIAPI AsmWriteMm1(IN UINT64 Value)
UINT32 EFIAPI BitFieldAnd32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
UINTN EFIAPI AsciiStrnLenS(IN CONST CHAR8 *String, IN UINTN MaxSize)
UINT64 EFIAPI BitFieldOr64(IN UINT64 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 OrData)
UINT8 EFIAPI BitFieldCountOnes64(IN UINT64 Operand, IN UINTN StartBit, IN UINTN EndBit)
UINT16 EFIAPI BitFieldAnd16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData)
UINT64 EFIAPI CalculateCheckSum64(IN CONST UINT64 *Buffer, IN UINTN Length)
INTN EFIAPI AsciiStriCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString)
UINT32 EFIAPI RRotU32(IN UINT32 Operand, IN UINTN Count)
UINT64 EFIAPI StrHexToUint64(IN CONST CHAR16 *String)
BOOLEAN EFIAPI IsNull(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
UINT8 EFIAPI BcdToDecimal8(IN UINT8 Value)
LIST_ENTRY *EFIAPI GetPreviousNode(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
BOOLEAN EFIAPI SetInterruptState(IN BOOLEAN InterruptState)
UINT64 EFIAPI BitFieldAndThenOr64(IN UINT64 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 AndData, IN UINT64 OrData)
UINTN EFIAPI StrSize(IN CONST CHAR16 *String)
UINT8 EFIAPI BitFieldAndThenOr8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData, IN UINT8 OrData)
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
BOOLEAN EFIAPI SevGuestIsEnabled(VOID)
RETURN_STATUS EFIAPI AsciiStrnCpyS(OUT CHAR8 *Destination, IN UINTN DestMax, IN CONST CHAR8 *Source, IN UINTN Length)
UINT32 EFIAPI BitFieldAndThenOr32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
INTN EFIAPI LowBitSet32(IN UINT32 Operand)
RETURN_STATUS EFIAPI StrCpyS(OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source)
UINT64 EFIAPI ReadUnaligned64(IN CONST VOID *Buffer)
CHAR16 EFIAPI CharToUpper(IN CHAR16 Char)
LIST_ENTRY *EFIAPI GetNextNode(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
BOOLEAN EFIAPI GetInterruptState(VOID)
UINT16 EFIAPI WriteUnaligned16(OUT VOID *Buffer, IN UINT16 Value)
UINT64 EFIAPI DivU64x32(IN UINT64 Dividend, IN UINT32 Divisor)
UINTN EFIAPI StrDecimalToUintn(IN CONST CHAR16 *String)
INTN EFIAPI StrCmp(IN CONST CHAR16 *FirstString, IN CONST CHAR16 *SecondString)
RETURNS_TWICE UINTN EFIAPI SetJump(OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer)
UINT32 EFIAPI ReadUnaligned24(IN CONST VOID *Buffer)
UINT64 EFIAPI MultU64x64(IN UINT64 Multiplicand, IN UINT64 Multiplier)
UINT32 EFIAPI CalculateSum32(IN CONST UINT32 *Buffer, IN UINTN Length)
INTN(EFIAPI * BASE_SORT_COMPARE)(IN CONST VOID *Buffer1, IN CONST VOID *Buffer2)
BOOLEAN EFIAPI SaveAndDisableInterrupts(VOID)
UINT16 EFIAPI SwapBytes16(IN UINT16 Value)
BOOLEAN EFIAPI IsNodeAtEnd(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
UINTN EFIAPI TdCall(IN UINT64 Leaf, IN UINT64 Arg1, IN UINT64 Arg2, IN UINT64 Arg3, IN OUT VOID *Results)
RETURN_STATUS EFIAPI AsciiStrHexToUint64S(IN CONST CHAR8 *String, OUT CHAR8 **EndPointer OPTIONAL, OUT UINT64 *Data)
VOID EFIAPI SwitchStack(IN SWITCH_STACK_ENTRY_POINT EntryPoint, IN VOID *Context1 OPTIONAL, IN VOID *Context2 OPTIONAL, IN VOID *NewStack,...)
UINT32 EFIAPI CalculateCrc32(IN VOID *Buffer, IN UINTN Length)
INT64 EFIAPI DivS64x64Remainder(IN INT64 Dividend, IN INT64 Divisor, OUT INT64 *Remainder OPTIONAL)
UINT64 EFIAPI AsciiStrDecimalToUint64(IN CONST CHAR8 *String)
UINTN EFIAPI AsciiStrLen(IN CONST CHAR8 *String)
UINT32 EFIAPI WriteUnaligned24(OUT VOID *Buffer, IN UINT32 Value)
UINT64 EFIAPI StrDecimalToUint64(IN CONST CHAR16 *String)
LIST_ENTRY *EFIAPI InsertHeadList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
RETURN_STATUS EFIAPI AsciiStrCatS(IN OUT CHAR8 *Destination, IN UINTN DestMax, IN CONST CHAR8 *Source)
RETURN_STATUS EFIAPI StrDecimalToUint64S(IN CONST CHAR16 *String, OUT CHAR16 **EndPointer OPTIONAL, OUT UINT64 *Data)
UINT32 EFIAPI GetPowerOfTwo32(IN UINT32 Operand)
UINT32 EFIAPI BitFieldWrite32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
LIST_ENTRY *EFIAPI GetFirstNode(IN CONST LIST_ENTRY *List)
UINT16 EFIAPI BitFieldAndThenOr16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData, IN UINT16 OrData)
UINT16 EFIAPI CalculateSum16(IN CONST UINT16 *Buffer, IN UINTN Length)
UINT32 EFIAPI BitFieldOr32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
UINT32 EFIAPI WriteUnaligned32(OUT VOID *Buffer, IN UINT32 Value)
UINT64 EFIAPI BitFieldWrite64(IN UINT64 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 Value)
INTN EFIAPI AsciiStrCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString)
UINTN EFIAPI StrnSizeS(IN CONST CHAR16 *String, IN UINTN MaxSize)
VOID EFIAPI CpuDeadLoop(VOID)
VOID EFIAPI QuickSort(IN OUT VOID *BufferToSort, IN CONST UINTN Count, IN CONST UINTN ElementSize, IN BASE_SORT_COMPARE CompareFunction, OUT VOID *BufferOneElement)
UINT8 EFIAPI CalculateSum8(IN CONST UINT8 *Buffer, IN UINTN Length)
INTN EFIAPI AsciiStrnCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString, IN UINTN Length)
RETURN_STATUS EFIAPI UnicodeStrToAsciiStrS(IN CONST CHAR16 *Source, OUT CHAR8 *Destination, IN UINTN DestMax)
VOID EFIAPI MemoryFence(VOID)
VOID EFIAPI CpuPause(VOID)
UINT8 EFIAPI CalculateCheckSum8(IN CONST UINT8 *Buffer, IN UINTN Length)
RETURN_STATUS EFIAPI Base64Decode(IN CONST CHAR8 *Source OPTIONAL, IN UINTN SourceSize, OUT UINT8 *Destination OPTIONAL, IN OUT UINTN *DestinationSize)
VOID EFIAPI EnableInterrupts(VOID)
UINTN EFIAPI AsciiStrDecimalToUintn(IN CONST CHAR8 *String)
LIST_ENTRY *EFIAPI SwapListEntries(IN OUT LIST_ENTRY *FirstEntry, IN OUT LIST_ENTRY *SecondEntry)
RETURN_STATUS EFIAPI StrCatS(IN OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source)
UINT32 EFIAPI SwapBytes32(IN UINT32 Value)
UINT32 EFIAPI ModU64x32(IN UINT64 Dividend, IN UINT32 Divisor)
VOID EFIAPI DisableInterrupts(VOID)
RETURN_STATUS EFIAPI AsciiStrDecimalToUintnS(IN CONST CHAR8 *String, OUT CHAR8 **EndPointer OPTIONAL, OUT UINTN *Data)
UINT8 EFIAPI BitFieldWrite8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 Value)
VOID EFIAPI ConvertUuidToGuid(IN GUID *FromUuid, OUT GUID *ToGuid)
UINTN EFIAPI StrHexToUintn(IN CONST CHAR16 *String)
RETURN_STATUS EFIAPI AsciiStrHexToUintnS(IN CONST CHAR8 *String, OUT CHAR8 **EndPointer OPTIONAL, OUT UINTN *Data)
UINTN EFIAPI StrnLenS(IN CONST CHAR16 *String, IN UINTN MaxSize)
RETURN_STATUS EFIAPI StrToIpv6Address(IN CONST CHAR16 *String, OUT CHAR16 **EndPointer OPTIONAL, OUT IPv6_ADDRESS *Address, OUT UINT8 *PrefixLength OPTIONAL)
RETURN_STATUS EFIAPI StrToIpv4Address(IN CONST CHAR16 *String, OUT CHAR16 **EndPointer OPTIONAL, OUT IPv4_ADDRESS *Address, OUT UINT8 *PrefixLength OPTIONAL)
INTN EFIAPI StrnCmp(IN CONST CHAR16 *FirstString, IN CONST CHAR16 *SecondString, IN UINTN Length)
RETURN_STATUS EFIAPI AsciiStrDecimalToUint64S(IN CONST CHAR8 *String, OUT CHAR8 **EndPointer OPTIONAL, OUT UINT64 *Data)
UINT8 EFIAPI BitFieldRead8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit)
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
UINT64 EFIAPI RShiftU64(IN UINT64 Operand, IN UINTN Count)
UINT64 EFIAPI ARShiftU64(IN UINT64 Operand, IN UINTN Count)
RETURN_STATUS EFIAPI AsciiStrToGuid(IN CONST CHAR8 *String, OUT GUID *Guid)
UINT64 EFIAPI MultU64x32(IN UINT64 Multiplicand, IN UINT32 Multiplier)
RETURN_STATUS EFIAPI StrToGuid(IN CONST CHAR16 *String, OUT GUID *Guid)
RETURN_STATUS EFIAPI AsciiStrToIpv4Address(IN CONST CHAR8 *String, OUT CHAR8 **EndPointer OPTIONAL, OUT IPv4_ADDRESS *Address, OUT UINT8 *PrefixLength OPTIONAL)
CHAR16 *EFIAPI PathCleanUpDirectories(IN CHAR16 *Path)
UINT16 EFIAPI CalculateCheckSum16(IN CONST UINT16 *Buffer, IN UINTN Length)
UINT64 EFIAPI DivU64x32Remainder(IN UINT64 Dividend, IN UINT32 Divisor, OUT UINT32 *Remainder OPTIONAL)
RETURN_STATUS EFIAPI StrHexToUintnS(IN CONST CHAR16 *String, OUT CHAR16 **EndPointer OPTIONAL, OUT UINTN *Data)
UINT8 EFIAPI BitFieldAnd8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData)
UINTN EFIAPI AsciiStrnSizeS(IN CONST CHAR8 *String, IN UINTN MaxSize)
UINT64 EFIAPI DivU64x64Remainder(IN UINT64 Dividend, IN UINT64 Divisor, OUT UINT64 *Remainder OPTIONAL)
UINT64 EFIAPI GetPowerOfTwo64(IN UINT64 Operand)
BOOLEAN EFIAPI PathRemoveLastItem(IN OUT CHAR16 *Path)
UINT32 EFIAPI ReadUnaligned32(IN CONST VOID *Buffer)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
UINT16 EFIAPI BitFieldWrite16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 Value)
RETURN_STATUS EFIAPI StrHexToBytes(IN CONST CHAR16 *String, IN UINTN Length, OUT UINT8 *Buffer, IN UINTN MaxBufferSize)
UINT64 EFIAPI RRotU64(IN UINT64 Operand, IN UINTN Count)
UINTN EFIAPI AsciiStrHexToUintn(IN CONST CHAR8 *String)
INT64 EFIAPI MultS64x64(IN INT64 Multiplicand, IN INT64 Multiplier)
RETURN_STATUS EFIAPI AsciiStrToIpv6Address(IN CONST CHAR8 *String, OUT CHAR8 **EndPointer OPTIONAL, OUT IPv6_ADDRESS *Address, OUT UINT8 *PrefixLength OPTIONAL)
INTN EFIAPI LowBitSet64(IN UINT64 Operand)
RETURN_STATUS EFIAPI StrnCatS(IN OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source, IN UINTN Length)
VOID EFIAPI CpuBreakpoint(VOID)
UINT8 EFIAPI DecimalToBcd8(IN UINT8 Value)
RETURN_STATUS EFIAPI StrDecimalToUintnS(IN CONST CHAR16 *String, OUT CHAR16 **EndPointer OPTIONAL, OUT UINTN *Data)
UINT64 EFIAPI BitFieldRead64(IN UINT64 Operand, IN UINTN StartBit, IN UINTN EndBit)
UINT64 EFIAPI LShiftU64(IN UINT64 Operand, IN UINTN Count)
UINT64 EFIAPI BitFieldAnd64(IN UINT64 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 AndData)
RETURN_STATUS EFIAPI AsciiStrToUnicodeStrS(IN CONST CHAR8 *Source, OUT CHAR16 *Destination, IN UINTN DestMax)
UINT64 EFIAPI SwapBytes64(IN UINT64 Value)
UINT16 EFIAPI CalculateCrc16CcittF(IN CONST VOID *Buffer, IN UINTN Length, IN UINT16 InitialValue)
UINT16 EFIAPI BitFieldOr16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 OrData)
VOID EFIAPI ConvertGuidToUuid(IN GUID *FromGuid, OUT GUID *ToUuid)
UINT64 EFIAPI CalculateSum64(IN CONST UINT64 *Buffer, IN UINTN Length)
UINT8 EFIAPI BitFieldCountOnes32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit)
VOID(EFIAPI * SWITCH_STACK_ENTRY_POINT)(IN VOID *Context1 OPTIONAL, IN VOID *Context2 OPTIONAL)
RETURN_STATUS EFIAPI StrHexToUint64S(IN CONST CHAR16 *String, OUT CHAR16 **EndPointer OPTIONAL, OUT UINT64 *Data)
UINT16 EFIAPI BitFieldRead16(IN UINT16 Operand, IN UINTN StartBit, IN UINTN EndBit)
UINTN EFIAPI AsciiStrSize(IN CONST CHAR8 *String)
UINT32 EFIAPI LRotU32(IN UINT32 Operand, IN UINTN Count)
UINT32 EFIAPI CalculateCrc32c(IN CONST VOID *Buffer, IN UINTN Length, IN UINT32 InitialValue)
UINT16 EFIAPI CalculateCrc16Ansi(IN CONST VOID *Buffer, IN UINTN Length, IN UINT16 InitialValue)
VOID EFIAPI LongJump(IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer, IN UINTN Value)
RETURN_STATUS EFIAPI StrnCpyS(OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source, IN UINTN Length)
UINT64 EFIAPI WriteUnaligned64(OUT VOID *Buffer, IN UINT64 Value)
INTN EFIAPI HighBitSet64(IN UINT64 Operand)
RETURN_STATUS EFIAPI AsciiStrHexToBytes(IN CONST CHAR8 *String, IN UINTN Length, OUT UINT8 *Buffer, IN UINTN MaxBufferSize)
UINT16 EFIAPI ReadUnaligned16(IN CONST VOID *Buffer)
UINT8 EFIAPI BitFieldOr8(IN UINT8 Operand, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 OrData)
UINT32 EFIAPI CalculateCheckSum32(IN CONST UINT32 *Buffer, IN UINTN Length)
RETURN_STATUS EFIAPI AsciiStrnCatS(IN OUT CHAR8 *Destination, IN UINTN DestMax, IN CONST CHAR8 *Source, IN UINTN Length)
UINT64 EFIAPI LRotU64(IN UINT64 Operand, IN UINTN Count)
RETURN_STATUS EFIAPI AsciiStrnToUnicodeStrS(IN CONST CHAR8 *Source, IN UINTN Length, OUT CHAR16 *Destination, IN UINTN DestMax, OUT UINTN *DestinationLength)
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
CHAR8 *EFIAPI AsciiStrStr(IN CONST CHAR8 *String, IN CONST CHAR8 *SearchString)
BOOLEAN EFIAPI IsNodeInList(IN CONST LIST_ENTRY *FirstEntry, IN CONST LIST_ENTRY *SecondEntry)
CHAR8 EFIAPI AsciiCharToUpper(IN CHAR8 Chr)
UINT64 EFIAPI AsciiStrHexToUint64(IN CONST CHAR8 *String)
RETURN_STATUS EFIAPI UnicodeStrnToAsciiStrS(IN CONST CHAR16 *Source, IN UINTN Length, OUT CHAR8 *Destination, IN UINTN DestMax, OUT UINTN *DestinationLength)
RETURN_STATUS EFIAPI AsciiStrCpyS(OUT CHAR8 *Destination, IN UINTN DestMax, IN CONST CHAR8 *Source)
VOID EFIAPI EnableDisableInterrupts(VOID)
CHAR16 *EFIAPI StrStr(IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString)
INTN EFIAPI HighBitSet32(IN UINT32 Operand)
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
RETURN_STATUS EFIAPI Base64Encode(IN CONST UINT8 *Source, IN UINTN SourceLength, OUT CHAR8 *Destination OPTIONAL, IN OUT UINTN *DestinationSize)
UINTN EFIAPI TdVmCall(IN UINT64 Leaf, IN UINT64 Arg1, IN UINT64 Arg2, IN UINT64 Arg3, IN UINT64 Arg4, IN OUT VOID *Results)
UINT32 EFIAPI BitFieldRead32(IN UINT32 Operand, IN UINTN StartBit, IN UINTN EndBit)
VOID EFIAPI SpeculationBarrier(VOID)
UINT32 EFIAPI AsmCpuidEx(IN UINT32 Index, IN UINT32 SubIndex, OUT UINT32 *RegisterEax OPTIONAL, OUT UINT32 *RegisterEbx OPTIONAL, OUT UINT32 *RegisterEcx OPTIONAL, OUT UINT32 *RegisterEdx OPTIONAL)
UINTN EFIAPI CsrRead(IN UINT16 Select)
UINTN EFIAPI CsrXChg(IN UINT16 Select, IN OUT UINTN Value, IN UINTN Mask)
UINTN EFIAPI CsrWrite(IN UINT16 Select, IN OUT UINTN Value)
VOID EFIAPI AsmDisableCache(VOID)
VOID EFIAPI AsmEnableCache(VOID)
VOID *EFIAPI AsmFlushCacheLine(IN VOID *LinearAddress)
UINTN EFIAPI AsmWriteDr1(UINTN Dr1)
UINT16 EFIAPI AsmReadTr(VOID)
UINT16 EFIAPI AsmReadLdtr(VOID)
UINTN EFIAPI AsmWriteDr4(UINTN Dr4)
UINTN EFIAPI AsmReadDr1(VOID)
VOID EFIAPI AsmInvd(VOID)
UINTN EFIAPI AsmReadDr0(VOID)
UINT16 EFIAPI AsmReadFs(VOID)
UINTN EFIAPI AsmWriteDr7(UINTN Dr7)
UINTN EFIAPI AsmWriteDr3(UINTN Dr3)
UINT16 EFIAPI AsmReadEs(VOID)
UINTN EFIAPI AsmReadCr3(VOID)
UINTN EFIAPI AsmReadDr2(VOID)
UINTN EFIAPI AsmWriteCr2(UINTN Cr2)
UINT64 EFIAPI AsmReadMsr64(IN UINT32 Index)
UINTN EFIAPI AsmWriteCr3(UINTN Cr3)
UINTN EFIAPI AsmWriteCr4(UINTN Cr4)
VOID EFIAPI AsmWbinvd(VOID)
UINTN EFIAPI AsmReadCr0(VOID)
UINTN EFIAPI AsmWriteDr2(UINTN Dr2)
UINTN EFIAPI AsmWriteDr0(UINTN Dr0)
UINT16 EFIAPI AsmReadGs(VOID)
UINTN EFIAPI AsmWriteCr0(UINTN Cr0)
UINTN EFIAPI AsmWriteDr5(UINTN Dr5)
UINTN EFIAPI AsmReadCr2(VOID)
UINT16 EFIAPI AsmReadSs(VOID)
UINT16 EFIAPI AsmReadCs(VOID)
UINT64 EFIAPI AsmWriteMsr64(IN UINT32 Index, IN UINT64 Value)
UINTN EFIAPI AsmReadDr3(VOID)
VOID EFIAPI AsmWriteLdtr(IN UINT16 Ldtr)
UINTN EFIAPI AsmReadCr4(VOID)
UINTN EFIAPI AsmReadDr6(VOID)
UINTN EFIAPI AsmWriteDr6(UINTN Dr6)
UINT64 EFIAPI AsmReadPmc(IN UINT32 Index)
UINT16 EFIAPI AsmReadDs(VOID)
UINTN EFIAPI AsmReadDr4(VOID)
UINTN EFIAPI AsmReadDr7(VOID)
UINTN EFIAPI AsmReadDr5(VOID)
UINT32 EFIAPI AsmCpuid(IN UINT32 Index, OUT UINT32 *RegisterEax OPTIONAL, OUT UINT32 *RegisterEbx OPTIONAL, OUT UINT32 *RegisterEcx OPTIONAL, OUT UINT32 *RegisterEdx OPTIONAL)
BOOLEAN EFIAPI TdIsEnabled()
UINTN EFIAPI AsmMonitor(IN UINTN RegisterEax, IN UINTN RegisterEcx, IN UINTN RegisterEdx)
UINTN EFIAPI AsmMwait(IN UINTN RegisterEax, IN UINTN RegisterEcx)
VOID EFIAPI AsmDisablePaging32(IN SWITCH_STACK_ENTRY_POINT EntryPoint, IN VOID *Context1 OPTIONAL, IN VOID *Context2 OPTIONAL, IN VOID *NewStack)
VOID EFIAPI AsmDisablePaging64(IN UINT16 Cs, IN UINT32 EntryPoint, IN UINT32 Context1 OPTIONAL, IN UINT32 Context2 OPTIONAL, IN UINT32 NewStack)
VOID EFIAPI AsmEnablePaging32(IN SWITCH_STACK_ENTRY_POINT EntryPoint, IN VOID *Context1 OPTIONAL, IN VOID *Context2 OPTIONAL, IN VOID *NewStack)
VOID EFIAPI AsmEnablePaging64(IN UINT16 Cs, IN UINT64 EntryPoint, IN UINT64 Context1 OPTIONAL, IN UINT64 Context2 OPTIONAL, IN UINT64 NewStack)
VOID EFIAPI AsmFxRestore(IN CONST IA32_FX_BUFFER *Buffer)
VOID EFIAPI AsmFxSave(OUT IA32_FX_BUFFER *Buffer)
UINT32 EFIAPI AsmWriteMsr32(IN UINT32 Index, IN UINT32 Value)
UINT64 EFIAPI AsmMsrAnd64(IN UINT32 Index, IN UINT64 AndData)
UINT64 EFIAPI AsmMsrBitFieldOr64(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 OrData)
UINT32 EFIAPI AsmMsrBitFieldAndThenOr32(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
UINT64 EFIAPI AsmMsrOr64(IN UINT32 Index, IN UINT64 OrData)
UINT32 EFIAPI AsmMsrAnd32(IN UINT32 Index, IN UINT32 AndData)
UINT32 EFIAPI AsmMsrAndThenOr32(IN UINT32 Index, IN UINT32 AndData, IN UINT32 OrData)
UINT64 EFIAPI AsmMsrBitFieldWrite64(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 Value)
UINT64 EFIAPI AsmMsrBitFieldAnd64(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 AndData)
UINT32 EFIAPI AsmMsrBitFieldOr32(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
UINT32 EFIAPI AsmMsrOr32(IN UINT32 Index, IN UINT32 OrData)
UINT32 EFIAPI AsmReadMsr32(IN UINT32 Index)
UINT64 EFIAPI AsmMsrBitFieldRead64(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit)
UINT64 EFIAPI AsmMsrBitFieldAndThenOr64(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT64 AndData, IN UINT64 OrData)
UINT64 EFIAPI AsmMsrAndThenOr64(IN UINT32 Index, IN UINT64 AndData, IN UINT64 OrData)
UINT32 EFIAPI AsmMsrBitFieldRead32(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit)
UINT32 EFIAPI AsmMsrBitFieldWrite32(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
UINT32 EFIAPI AsmMsrBitFieldAnd32(IN UINT32 Index, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
VOID EFIAPI PatchInstructionX86(OUT X86_ASSEMBLY_PATCH_LABEL *InstructionEnd, IN UINT64 PatchValue, IN UINTN ValueSize)
BOOLEAN EFIAPI AsmRdRand32(OUT UINT32 *Rand)
BOOLEAN EFIAPI AsmRdRand64(OUT UINT64 *Rand)
BOOLEAN EFIAPI AsmRdRand16(OUT UINT16 *Rand)
VOID EFIAPI AsmReadGdtr(OUT IA32_DESCRIPTOR *Gdtr)
VOID EFIAPI AsmReadIdtr(OUT IA32_DESCRIPTOR *Idtr)
VOID EFIAPI AsmGetThunk16Properties(OUT UINT32 *RealModeBufferSize, OUT UINT32 *ExtraStackSize)
VOID EFIAPI AsmPrepareThunk16(IN OUT THUNK_CONTEXT *ThunkContext)
VOID EFIAPI AsmPrepareAndThunk16(IN OUT THUNK_CONTEXT *ThunkContext)
VOID EFIAPI AsmThunk16(IN OUT THUNK_CONTEXT *ThunkContext)
VOID EFIAPI AsmWriteTr(IN UINT16 Selector)
VOID EFIAPI AsmWriteGdtr(IN CONST IA32_DESCRIPTOR *Gdtr)
VOID EFIAPI AsmWriteIdtr(IN CONST IA32_DESCRIPTOR *Idtr)
VOID EFIAPI AsmLfence(VOID)