137 lines
2.7 KiB
C
137 lines
2.7 KiB
C
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
wx86cpu.h
|
|
|
|
Abstract:
|
|
|
|
Defines the functions exported from the CPU DLL.
|
|
|
|
Author:
|
|
|
|
22-Aug-1995 BarryBo, Created
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _WX86CPU_
|
|
#define _WX86CPU_
|
|
|
|
#if !defined(_WX86CPUAPI_)
|
|
#define WX86CPUAPI DECLSPEC_IMPORT
|
|
#else
|
|
#define WX86CPUAPI
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
|
|
#define WX86CPU_UNSIMULATE STATUS_WX86_UNSIMULATE
|
|
#define WX86CPU_CONTINUE STATUS_WX86_CONTINUE
|
|
#define WX86CPU_SINGLE_STEP STATUS_WX86_SINGLE_STEP
|
|
#define WX86CPU_BREAKPOINT STATUS_WX86_BREAKPOINT
|
|
|
|
|
|
//
|
|
// Values used by the wx86e debugger extension to determine the CPU type
|
|
//
|
|
typedef enum _Wx86CpuType {
|
|
Wx86CpuUnknown,
|
|
Wx86CpuCcpu386,
|
|
Wx86CpuCcpu,
|
|
Wx86CpuCpu,
|
|
Wx86CpuFx32,
|
|
Wx86CpuOther
|
|
} WX86_CPUTYPE, *PWX86_CPUTYPE;
|
|
|
|
typedef struct Wx86CpuHint {
|
|
DWORD Hint;
|
|
DWORD_PTR Hint2;
|
|
} WX86_CPUHINT, *PWX86_CPUHINT;
|
|
|
|
#if !defined(__WOW64_WRAPPER__)
|
|
//
|
|
// Initialization and Termination routines
|
|
//
|
|
|
|
|
|
WX86CPUAPI BOOL CpuProcessTerm(BOOL OFlyInit);
|
|
|
|
//
|
|
// Cache manipulation functions
|
|
//
|
|
WX86CPUAPI VOID CpuFlushInstructionCache(PVOID BaseAddress, DWORD Length);
|
|
//WX86CPUAPI BOOLEAN CpuMapNotify(PVOID DllBase, BOOLEAN Mapped); moved down
|
|
WX86CPUAPI VOID CpuEnterIdle(BOOL fOFly);
|
|
|
|
//
|
|
// CPU feature set information
|
|
//
|
|
WX86CPUAPI BOOL CpuIsProcessorFeaturePresent(DWORD ProcessorFeature);
|
|
|
|
//
|
|
// Public Functions to get and set individual registers
|
|
// are defined in Wx86.h
|
|
//
|
|
|
|
|
|
//
|
|
// Functions for exception handling
|
|
//
|
|
|
|
|
|
WX86CPUAPI VOID MsCpuResetToConsistentState(PEXCEPTION_POINTERS pExecptionPointers);
|
|
WX86CPUAPI VOID CpuPrepareToContinue(PEXCEPTION_POINTERS pExecptionPointers);
|
|
|
|
//
|
|
// Functions for process/thread manipulation
|
|
//
|
|
WX86CPUAPI VOID CpuStallExecutionInThisProcess(VOID);
|
|
WX86CPUAPI VOID CpuResumeExecutionInThisProcess(VOID);
|
|
WX86CPUAPI DWORD CpuGetThreadContext(HANDLE hThread, PVOID CpuContext, PCONTEXT_WX86 Context);
|
|
WX86CPUAPI DWORD CpuSetThreadContext(HANDLE hThread, PVOID CpuContext, PCONTEXT_WX86 Context);
|
|
|
|
#endif //__WOW64_WRAPPER__
|
|
WX86CPUAPI BOOLEAN CpuMapNotify(PVOID DllBase, BOOLEAN Mapped);
|
|
WX86CPUAPI NTSTATUS MsCpuProcessInit(VOID);
|
|
WX86CPUAPI BOOL MsCpuThreadInit(VOID);
|
|
WX86CPUAPI VOID MsCpuSimulate(PWX86_CPUHINT);
|
|
|
|
WX86CPUAPI
|
|
NTSTATUS
|
|
MsCpuSetContext(
|
|
PCONTEXT_WX86 Context);
|
|
|
|
NTSTATUS
|
|
MsCpuSetContextThread(
|
|
IN HANDLE ProcessHandle,
|
|
IN PTEB Teb,
|
|
IN OUT PCONTEXT_WX86 Context);
|
|
|
|
WX86CPUAPI
|
|
NTSTATUS
|
|
MsCpuGetContext(
|
|
IN OUT PCONTEXT_WX86 Context);
|
|
|
|
WX86CPUAPI
|
|
NTSTATUS
|
|
MsCpuGetContextThread(
|
|
IN HANDLE ProcessHandle,
|
|
IN PTEB Teb,
|
|
IN OUT PCONTEXT_WX86 Context);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif //_WX86CPU_
|