From d19ea35db2bc27a3e870ce041200fdcb4297b1b7 Mon Sep 17 00:00:00 2001 From: Satoshi Tanda Date: Sun, 8 Mar 2020 18:36:56 -0700 Subject: [PATCH] Rename Utils to Ia32Utils --- Builds/Platform/EFI/MiniVisorDxe.inf | 4 ++-- Sources/ExtendedPageTables.c | 2 +- Sources/HostUtils.c | 2 +- Sources/{Utils.c => Ia32Utils.c} | 4 ++-- Sources/{Utils.h => Ia32Utils.h} | 2 +- Sources/MemoryAccess.c | 2 +- Sources/MiniVisor.c | 2 +- Sources/MiniVisor.vcxproj | 4 ++-- Sources/MiniVisor.vcxproj.filters | 12 ++++++------ Sources/Platform/EFI/EfiCommon.h | 12 ++++++++++++ Sources/Platform/EFI/EfiHostInitialization.c | 2 +- 11 files changed, 30 insertions(+), 18 deletions(-) rename Sources/{Utils.c => Ia32Utils.c} (99%) rename Sources/{Utils.h => Ia32Utils.h} (98%) diff --git a/Builds/Platform/EFI/MiniVisorDxe.inf b/Builds/Platform/EFI/MiniVisorDxe.inf index 3af4fb7..7b5e6c3 100644 --- a/Builds/Platform/EFI/MiniVisorDxe.inf +++ b/Builds/Platform/EFI/MiniVisorDxe.inf @@ -39,8 +39,8 @@ ../../../Sources/MiniVisor.c ../../../Sources/MiniVisor.h ../../../Sources/Platform.h - ../../../Sources/Utils.c - ../../../Sources/Utils.h + ../../../Sources/Ia32Utils.c + ../../../Sources/Ia32Utils.h ../../../Sources/Ia32.h ../../../Sources/Asm.asm ../../../Sources/Asm.h diff --git a/Sources/ExtendedPageTables.c b/Sources/ExtendedPageTables.c index 35ffaa7..dd2ffbf 100644 --- a/Sources/ExtendedPageTables.c +++ b/Sources/ExtendedPageTables.c @@ -14,7 +14,7 @@ #include "Platform.h" #include "Logger.h" #include "MemoryType.h" -#include "Utils.h" +#include "Ia32Utils.h" // // The set of EPT paging structure entries involved with to translate the GPA. diff --git a/Sources/HostUtils.c b/Sources/HostUtils.c index db0dfc6..f3daf84 100644 --- a/Sources/HostUtils.c +++ b/Sources/HostUtils.c @@ -10,7 +10,7 @@ #include "HostUtils.h" #include "Logger.h" #include "ExtendedPageTables.h" -#include "Utils.h" +#include "Ia32Utils.h" #include "MemoryAccess.h" /*! diff --git a/Sources/Utils.c b/Sources/Ia32Utils.c similarity index 99% rename from Sources/Utils.c rename to Sources/Ia32Utils.c index 43ebea2..c62de2e 100644 --- a/Sources/Utils.c +++ b/Sources/Ia32Utils.c @@ -1,5 +1,5 @@ /*! - @file Utils.c + @file Ia32Utils.c @brief Utility functions that could be used by both the host and non-host. @@ -7,7 +7,7 @@ @copyright Copyright (c) 2020 - , Satoshi Tanda. All rights reserved. */ -#include "Utils.h" +#include "Ia32Utils.h" #include "Asm.h" #include "Logger.h" diff --git a/Sources/Utils.h b/Sources/Ia32Utils.h similarity index 98% rename from Sources/Utils.h rename to Sources/Ia32Utils.h index 56709ed..6088bfe 100644 --- a/Sources/Utils.h +++ b/Sources/Ia32Utils.h @@ -1,5 +1,5 @@ /*! - @file Utils.h + @file Ia32Utils.h @brief Utility functions that could be used by both the host and non-host. diff --git a/Sources/MemoryAccess.c b/Sources/MemoryAccess.c index 1e1fe46..8537b4d 100644 --- a/Sources/MemoryAccess.c +++ b/Sources/MemoryAccess.c @@ -87,7 +87,7 @@ Exit: paging structures of the returned entry. @return The pointer to the final paging structure when the virtual address - is not mapped in the physical address. If not, returns the pointer to the + is mapped in the physical address. If not, returns the pointer to the paging structure entry that indicated that the page is not present (ie, the Present bit is cleared). */ diff --git a/Sources/MiniVisor.c b/Sources/MiniVisor.c index ef36ff2..68c349f 100644 --- a/Sources/MiniVisor.c +++ b/Sources/MiniVisor.c @@ -17,7 +17,7 @@ #include "Public.h" #include "MemoryType.h" #include "HostNesting.h" -#include "Utils.h" +#include "Ia32Utils.h" #include "MemoryAccess.h" // diff --git a/Sources/MiniVisor.vcxproj b/Sources/MiniVisor.vcxproj index 9f97059..331f13b 100644 --- a/Sources/MiniVisor.vcxproj +++ b/Sources/MiniVisor.vcxproj @@ -133,7 +133,7 @@ - + @@ -165,7 +165,7 @@ true - + diff --git a/Sources/MiniVisor.vcxproj.filters b/Sources/MiniVisor.vcxproj.filters index 8897338..7bf2444 100644 --- a/Sources/MiniVisor.vcxproj.filters +++ b/Sources/MiniVisor.vcxproj.filters @@ -66,9 +66,6 @@ Header Files - - Header Files - Header Files @@ -117,6 +114,9 @@ Header Files + + Header Files + @@ -134,9 +134,6 @@ Source Files - - Source Files - Source Files @@ -167,6 +164,9 @@ Source Files + + Source Files + diff --git a/Sources/Platform/EFI/EfiCommon.h b/Sources/Platform/EFI/EfiCommon.h index 47ece16..ee8e911 100644 --- a/Sources/Platform/EFI/EfiCommon.h +++ b/Sources/Platform/EFI/EfiCommon.h @@ -67,6 +67,7 @@ unsigned __int64 __readcr0(void); unsigned __int64 __readcr2(void); unsigned __int64 __readcr3(void); unsigned __int64 __readcr4(void); +unsigned __int64 __readcr8(void); unsigned __int64 __readdr(unsigned int); unsigned __int64 __readeflags(void); unsigned __int64 __readmsr(unsigned long); @@ -80,6 +81,7 @@ unsigned char __vmx_vmwrite(unsigned __int64, unsigned __int64); unsigned long __segmentlimit(unsigned long); void __cpuid(int[4], int); void __cpuidex(int[4], int, int); +void __debugbreak(void); void __invlpg(void *); void __lidt(void *); void __sidt(void *); @@ -92,21 +94,31 @@ void __writecr3(unsigned __int64); void __writecr4(unsigned __int64); void __writedr(unsigned int, unsigned __int64); void __writemsr(unsigned long, unsigned __int64); +void _disable(void); +void _enable(void); void _lgdt(void *); void _sgdt(void *); void _xsetbv(unsigned int, unsigned __int64); +// +// Required. Otherwise, link error occurs. +// +#pragma intrinsic(_disable) +#pragma intrinsic(_enable) + // // MSVC compatibility macro definitions. // #define __drv_aliasesMem #define __drv_allocatesMem(x) #define __drv_freesMem(x) +#define __drv_strictTypeMatch(x) #define _Acquires_lock_(x) #define _In_ #define _In_opt_ #define _In_range_(x, y) #define _In_reads_bytes_(x) +#define _In_z_ #define _Inout_ #define _IRQL_raises_(x) #define _IRQL_requires_max_(x) diff --git a/Sources/Platform/EFI/EfiHostInitialization.c b/Sources/Platform/EFI/EfiHostInitialization.c index 3d6e202..6c3c671 100644 --- a/Sources/Platform/EFI/EfiHostInitialization.c +++ b/Sources/Platform/EFI/EfiHostInitialization.c @@ -33,7 +33,7 @@ #include "EfiHostInitialization.h" #include "EfiAsm.h" #include "EfiPlatform.h" -#include "../../Utils.h" +#include "../../Ia32Utils.h" #include "EfiLogger.h" //