windows-nt/Source/XPSP1/NT/base/wow64/cpu/ia64/bintrans/cpumain.c
2020-09-26 16:20:57 +08:00

484 lines
7.5 KiB
C

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
cpumain.c
Abstract:
Main entrypoints for IA64 ia64bt.dll. This code is really a dummy
and a user can put in a real dll at a later date. As long as the
entry points exist, we are fine. It is delay loaded by
wow64cpu depending on whether the binary translation code is
enabled.
Author:
22-August-2000 v-cspira (Charles Spirakis)
Revision History:
--*/
#define _WOW64BTAPI_
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <ntosp.h>
#include <kxia64.h>
#include "wow64.h"
#include "wow64cpu.h"
#include "ia64cpu.h"
#include "bintrans.h"
ASSERTNAME;
WOW64BTAPI
NTSTATUS
BTCpuProcessInit(
PWSTR pImageName,
PSIZE_T pCpuThreadSize
)
/*++
Routine Description:
Per-process initialization code
Arguments:
pImageName - IN the name of the image. The memory for this
is freed after the call, so if the callee wants
to keep the name around, they need to allocate space
and copy it. DON'T SAVE THE POINTER!
pCpuThreadSize - OUT ptr to number of bytes of memory the CPU
wants allocated for each thread.
Return Value:
NTSTATUS.
--*/
{
return STATUS_NOT_IMPLEMENTED;
}
WOW64BTAPI
NTSTATUS
BTCpuProcessTerm(
HANDLE ProcessHandle
)
/*++
Routine Description:
Per-process termination code. Note that this routine may not be called,
especially if the process is terminated by another process.
Arguments:
None.
Return Value:
NTSTATUS.
--*/
{
return STATUS_NOT_IMPLEMENTED;
}
WOW64BTAPI
NTSTATUS
BTCpuThreadInit(
PVOID pPerThreadData
)
/*++
Routine Description:
Per-thread termination code.
Arguments:
pPerThreadData - Pointer to zero-filled per-thread data with the
size returned from CpuProcessInit.
Return Value:
NTSTATUS.
--*/
{
return STATUS_NOT_IMPLEMENTED;
}
WOW64BTAPI
NTSTATUS
BTCpuThreadTerm(
VOID
)
/*++
Routine Description:
Per-thread termination code. Note that this routine may not be called,
especially if the thread is terminated abnormally.
Arguments:
None.
Return Value:
NTSTATUS.
--*/
{
return STATUS_NOT_IMPLEMENTED;
}
WOW64BTAPI
VOID
BTCpuSimulate(
VOID
)
/*++
Routine Description:
Call 32-bit code. The CONTEXT32 has already been set up to go.
Arguments:
None.
Return Value:
None. Never returns.
--*/
{
}
WOW64BTAPI
VOID
BTCpuResetFloatingPoint(
VOID
)
/*++
Routine Description:
Modifies the floating point state to reset it to a non-error state
Arguments:
None.
Return Value:
None.
--*/
{
}
WOW64BTAPI
VOID
BTCpuResetToConsistentState(
PEXCEPTION_POINTERS pExceptionPointers
)
/*++
Routine Description:
After an exception occurs, WOW64 calls this routine to give the CPU
a chance to clean itself up and recover the CONTEXT32 at the time of
the fault.
CpuResetToConsistantState() needs to:
0) Check if the exception was from ia32 or ia64
If exception was ia64, do nothing and return
If exception was ia32, needs to:
1) Needs to copy CONTEXT eip to the TLS (WOW64_TLS_EXCEPTIONADDR)
2) reset the CONTEXT struction to be a valid ia64 state for unwinding
this includes:
2a) reset CONTEXT ip to a valid ia64 ip (usually
the destination of the jmpe)
2b) reset CONTEXT sp to a valid ia64 sp (TLS
entry WOW64_TLS_STACKPTR64)
2c) reset CONTEXT gp to a valid ia64 gp
2d) reset CONTEXT teb to a valid ia64 teb
2e) reset CONTEXT psr.is (so exception handler runs as ia64 code)
Arguments:
pExceptionPointers - 64-bit exception information
Return Value:
None.
--*/
{
}
WOW64BTAPI
ULONG
BTCpuGetStackPointer(
VOID
)
/*++
Routine Description:
Returns the current 32-bit stack pointer value.
Arguments:
None.
Return Value:
Value of 32-bit stack pointer.
--*/
{
return 0;
}
WOW64BTAPI
VOID
BTCpuSetStackPointer(
ULONG Value
)
/*++
Routine Description:
Modifies the current 32-bit stack pointer value.
Arguments:
Value - new value to use for 32-bit stack pointer.
Return Value:
None.
--*/
{
}
WOW64BTAPI
VOID
BTCpuSetInstructionPointer(
ULONG Value
)
/*++
Routine Description:
Modifies the current 32-bit instruction pointer value.
Arguments:
Value - new value to use for 32-bit instruction pointer.
Return Value:
None.
--*/
{
}
WOW64BTAPI
VOID
BTCpuNotifyDllLoad(
LPWSTR DllName,
PVOID DllBase,
ULONG DllSize
)
/*++
Routine Description:
This routine get notified when application successfully load a dll.
Arguments:
DllName - Name of the Dll the application has loaded.
DllBase - BaseAddress of the dll.
DllSize - size of the Dll.
Return Value:
None.
--*/
{
}
WOW64BTAPI
VOID
BTCpuNotifyDllUnload(
PVOID DllBase
)
/*++
Routine Description:
This routine get notified when application unload a dll.
Arguments:
DllBase - BaseAddress of the dll.
Return Value:
None.
--*/
{
}
WOW64BTAPI
VOID
BTCpuFlushInstructionCache (
PVOID BaseAddress,
ULONG Length
)
/*++
Routine Description:
The CPU needs to flush its cache around the specified address, since
some external code has altered the specified range of addresses.
Arguments:
BaseAddress - start of range to flush
Length - number of bytes to flush
Return Value:
None.
--*/
{
}
WOW64BTAPI
NTSTATUS
BTCpuGetContext(
IN HANDLE ThreadHandle,
IN HANDLE ProcessHandle,
IN PTEB Teb,
OUT PCONTEXT32 Context)
/*++
Routine Description:
Extracts the cpu context of the specified thread.
When entered, it is guaranteed that the target thread is suspended at
a proper CPU state.
Arguments:
ThreadHandle - Target thread handle to retreive the context for
ProcessHandle - Open handle to the process that the thread runs in
Teb - Pointer to the target's thread TEB
Context - Context record to fill
Return Value:
NTSTATUS.
--*/
{
return STATUS_NOT_IMPLEMENTED;
}
WOW64BTAPI
NTSTATUS
BTCpuSetContext(
IN HANDLE ThreadHandle,
IN HANDLE ProcessHandle,
IN PTEB Teb,
PCONTEXT32 Context)
/*++
Routine Description:
Sets the cpu context for the specified thread.
When entered, if the target thread isn't the currently executing thread, the
n it is
guaranteed that the target thread is suspended at a proper CPU state.
Arguments:
ThreadHandle - Target thread handle to retreive the context for
ProcessHandle - Open handle to the process that the thread runs in
Teb - Pointer to the target's thread TEB
Context - Context record to set
Return Value:
NTSTATUS.
--*/
{
return STATUS_NOT_IMPLEMENTED;
}
WOW64BTAPI
NTSTATUS
BTCpuSuspendThread(
IN HANDLE ThreadHandle,
IN HANDLE ProcessHandle,
IN PTEB Teb,
OUT PULONG PreviousSuspendCount OPTIONAL)
/*++
Routine Description:
This routine is entered while the target thread is actually suspended, howev
er, it's
not known if the target thread is in a consistent state relative to
the CPU.
Arguments:
ThreadHandle - Handle of target thread to suspend
ProcessHandle - Handle of target thread's process
Teb - Address of the target thread's TEB
PreviousSuspendCount - Previous suspend count
Return Value:
NTSTATUS.
--*/
{
return STATUS_NOT_IMPLEMENTED;
}