Publish the files
This commit is contained in:
79
Sources/HostNesting.h
Normal file
79
Sources/HostNesting.h
Normal file
@@ -0,0 +1,79 @@
|
||||
/*!
|
||||
@file HostNesting.h
|
||||
|
||||
@brief Incomplete nesting related code. Do not study.
|
||||
|
||||
@author Satoshi Tanda
|
||||
|
||||
@copyright Copyright (c) 2020 - , Satoshi Tanda. All rights reserved.
|
||||
*/
|
||||
#pragma once
|
||||
#include "Common.h"
|
||||
#include "Ia32.h"
|
||||
#include "HostUtils.h"
|
||||
#include "ExtendedPageTables.h"
|
||||
|
||||
typedef enum _VMX_OPERATION
|
||||
{
|
||||
VmxOperationNotInVmxOperation,
|
||||
VmxOperationRoot,
|
||||
VmxOperationNonRoot,
|
||||
} VMX_OPERATION;
|
||||
|
||||
typedef enum _VMCS_LAUNCH_STATE
|
||||
{
|
||||
LaunchStateUnintialized,
|
||||
LaunchStateClear,
|
||||
LaunchStateLaunched,
|
||||
} VMCS_LAUNCH_STATE;
|
||||
|
||||
typedef struct _NEXTED_VMX_CONTEXT
|
||||
{
|
||||
VMX_OPERATION VmxOperation;
|
||||
VMCS_LAUNCH_STATE VmcsLaunchState;
|
||||
|
||||
//
|
||||
// The physical address of the VMXON region (used by L1 for L2)
|
||||
//
|
||||
UINT64 Vmxon12Pa;
|
||||
|
||||
//
|
||||
// The physical addresses of VMCSs (used by L0 for L1 and L2)
|
||||
//
|
||||
UINT64 Vmcs01Pa;
|
||||
UINT64 Vmcs02Pa;
|
||||
|
||||
//
|
||||
// Current VMCS from the point of view of the nested VMM (used by L1 for L2)
|
||||
//
|
||||
UINT64 Vmcs12Pa;
|
||||
|
||||
//
|
||||
// EPT related data (used by L0 for L2)
|
||||
//
|
||||
EPT_CONTEXT Ept02Context;
|
||||
EPT_PML4* EptPml4_02;
|
||||
|
||||
//
|
||||
// VMCS (used by L0 for L2).
|
||||
//
|
||||
DECLSPEC_ALIGN(PAGE_SIZE) VMCS Vmcs02;
|
||||
} NEXTED_VMX_CONTEXT;
|
||||
|
||||
VOID
|
||||
HandleVmx (
|
||||
_Inout_ GUEST_CONTEXT* GuestContext,
|
||||
_In_ UINT32 ExitReason
|
||||
);
|
||||
|
||||
VOID
|
||||
EmulateVmExitForL1Vmm (
|
||||
_Inout_ GUEST_CONTEXT* GuestContext,
|
||||
_In_ UINT32 ExitReason
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
IsVmExitForL1 (
|
||||
CONST GUEST_CONTEXT* GuestContext,
|
||||
VMX_VMEXIT_REASON VmExitReason
|
||||
);
|
||||
Reference in New Issue
Block a user