16#include <Library/BaseMemoryLib.h>
17#include <Library/BaseLib.h>
18#include <Library/DebugLib.h>
20#include <Library/UefiLib.h>
21#include <Library/UefiBootServicesTableLib.h>
29 IN EFI_HANDLE ImageHandle,
30 IN EFI_SYSTEM_TABLE *SystemTable
40 Src = ALIGN_POINTER (
mSource, 16);
44 gST->ConOut->OutputString (
gST->ConOut, L
"VerifyMemOpt\r\n");
47 Cr0.UintN = AsmReadCr0 ();
57 DEBUG ((DEBUG_WARN,
"VMOPT: CR0 %08X CR4 %08X EFLAGS %08X\n", Cr0, Cr4, Flags));
59 if (Cr0.Bits.MP == 0) {
60 DEBUG ((DEBUG_WARN,
"VMOPT: WARN CR0 MP is NOT set\n"));
63 if (Cr0.Bits.EM != 0) {
64 DEBUG ((DEBUG_WARN,
"VMOPT: WARN CR0 EM is set\n"));
67 if (Cr4.Bits.OSFXSR == 0) {
68 DEBUG ((DEBUG_WARN,
"VMOPT: WARN CR4 OSFXSR is NOT set\n"));
71 if (Cr4.Bits.OSXMMEXCPT == 0) {
72 DEBUG ((DEBUG_WARN,
"VMOPT: WARN CR4 OSXMMEXCPT is NOT set\n"));
75 if (Flags.Bits.DF != 0) {
76 DEBUG ((DEBUG_WARN,
"VMOPT: WARN EFLAGS DF is set\n"));
79 DEBUG ((DEBUG_WARN,
"VMOPT: CopyMem aligned src %p/aligned dst %p/size %u\n", Src, Dst,
Size));
84 DEBUG ((DEBUG_WARN,
"VMOPT: CopyMem unaligned src %p/aligned dst %p/size %u\n", Src, Dst,
Size));
89 DEBUG ((DEBUG_WARN,
"VMOPT: CopyMem unaligned src %p/aligned dst %p/size %u\n", Src, Dst,
Size));
94 DEBUG ((DEBUG_WARN,
"VMOPT: CopyMem unaligned src %p/unaligned dst %p/size %u\n", Src, Dst,
Size));
98 DEBUG ((DEBUG_WARN,
"VMOPT: Done testing\n"));
DMG_SIZE_DEVICE_PATH Size
#define SECONDS_TO_MICROSECONDS(x)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
UINTN EFIAPI AsmReadEflags(VOID)
UINTN EFIAPI AsmReadCr4(VOID)
EFI_STATUS EFIAPI UefiMain(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
STATIC UINT8 mDestination[64]