windows-nt/Source/XPSP1/NT/base/wow64/mscpu/fraglib/cpu/codeseq.h
2020-09-26 16:20:57 +08:00

195 lines
4.7 KiB
C

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
codeseq.h
Abstract:
This header file contains the function prototypes for all fragments
in codeseq.c
Author:
Barry Bond (barrybo) creation-date 23-Sept-1996
Revision History:
--*/
#undef FRAGMENT
#undef PATCH_FRAGMENT
#undef OP_FRAGMENT
#if _ALPHA_
#define FRAGMENT(name) \
ULONG \
Gen##name ( \
IN PULONG CodeLocation, \
IN ULONG CurrentECU, \
IN PINSTRUCTION Instruction \
);
#define PATCH_FRAGMENT(name) \
ULONG \
Gen##name ( \
IN PULONG CodeLocation, \
IN ULONG fCompiling, \
IN ULONG CurrentECU, \
IN ULONG Param1, \
IN ULONG Param2 \
);
#else
#define FRAGMENT(name) \
ULONG \
Gen##name ( \
IN PULONG CodeLocation, \
IN PINSTRUCTION Instruction \
);
#define PATCH_FRAGMENT(name) \
ULONG \
Gen##name ( \
IN PULONG CodeLocation, \
IN ULONG fCompiling, \
IN ULONG Param1, \
IN ULONG Param2 \
);
#endif
#define OP_FRAGMENT(name) \
ULONG \
Gen##name ( \
IN PULONG CodeLocation, \
IN POPERAND Operand, \
IN ULONG OperandNumber \
);
FRAGMENT(AddFragNoFlags32)
FRAGMENT(AddFragNoFlags32A)
FRAGMENT(AndFragNoFlags32)
FRAGMENT(AndFragNoFlags32A)
FRAGMENT(DecFragNoFlags32)
FRAGMENT(DecFragNoFlags32A)
FRAGMENT(IncFragNoFlags32)
FRAGMENT(IncFragNoFlags32A)
FRAGMENT(OrFragNoFlags32)
FRAGMENT(OrFragNoFlags32A)
FRAGMENT(SubFragNoFlags32)
FRAGMENT(SubFragNoFlags32A)
FRAGMENT(XorFragNoFlags32)
FRAGMENT(XorFragNoFlags32A)
FRAGMENT(StartBasicBlock)
FRAGMENT(JumpToNextCompilationUnit)
PATCH_FRAGMENT(JumpToNextCompilationUnit2)
FRAGMENT(CallCFrag)
FRAGMENT(CallCFragNoCpu)
FRAGMENT(CallCFragLoadEip)
FRAGMENT(CallCFragLoadEipNoCpu)
FRAGMENT(CallCFragLoadEipNoCpuSlow)
FRAGMENT(CallCFragLoadEipSlow)
FRAGMENT(CallCFragSlow)
FRAGMENT(CallCFragNoCpuSlow)
FRAGMENT(JaFrag)
FRAGMENT(JaeFrag)
FRAGMENT(JbeFrag)
FRAGMENT(JbFrag)
FRAGMENT(JeFrag)
FRAGMENT(JgFrag)
FRAGMENT(JlFrag)
FRAGMENT(JleFrag)
FRAGMENT(JneFrag)
FRAGMENT(JnlFrag)
FRAGMENT(JnoFrag)
FRAGMENT(JnpFrag)
FRAGMENT(JnsFrag)
FRAGMENT(JoFrag)
FRAGMENT(JpFrag)
FRAGMENT(JsFrag)
FRAGMENT(JecxzFrag)
FRAGMENT(JcxzFrag)
FRAGMENT(LoopFrag32)
FRAGMENT(LoopFrag16)
FRAGMENT(LoopneFrag32)
FRAGMENT(LoopneFrag16)
FRAGMENT(LoopeFrag32)
FRAGMENT(LoopeFrag16)
FRAGMENT(JxxBody)
PATCH_FRAGMENT(JxxBody2)
FRAGMENT(JxxStartSlow)
FRAGMENT(JxxBodySlow)
PATCH_FRAGMENT(JxxBodySlow2)
FRAGMENT(JxxBodyFwd)
PATCH_FRAGMENT(JxxBodyFwd2)
FRAGMENT(CallJmpDirect)
PATCH_FRAGMENT(CallJmpDirect2)
FRAGMENT(CallJmpDirectSlow)
PATCH_FRAGMENT(CallJmpDirectSlow2)
FRAGMENT(CallJmpFwdDirect)
PATCH_FRAGMENT(CallJmpFwdDirect2)
FRAGMENT(CallJmpfDirect)
PATCH_FRAGMENT(CallJmpfDirect2)
FRAGMENT(CallJmpIndirect)
FRAGMENT(CallJmpfIndirect)
FRAGMENT(CallRetIndirect)
FRAGMENT(CallDirect)
PATCH_FRAGMENT(CallDirect2)
PATCH_FRAGMENT(CallDirect3)
FRAGMENT(CallfDirect)
PATCH_FRAGMENT(CallfDirect2)
PATCH_FRAGMENT(CallfDirect3)
FRAGMENT(CallIndirect)
FRAGMENT(CallfIndirect)
PATCH_FRAGMENT(CallIndirect2)
PATCH_FRAGMENT(CallfIndirect2)
FRAGMENT(Movsx8To32)
FRAGMENT(Movsx8To32Slow)
FRAGMENT(Movsx16To32)
FRAGMENT(Movsx16To32Slow)
FRAGMENT(Movsx8To16)
FRAGMENT(Movsx8To16Slow)
FRAGMENT(Movzx8To32)
FRAGMENT(Movzx8To32Slow)
FRAGMENT(Movzx16To32)
FRAGMENT(Movzx16To32Slow)
FRAGMENT(Movzx8To16)
FRAGMENT(Movzx8To16Slow)
FRAGMENT(EndCompilationUnit)
FRAGMENT(EndMovSlow)
#if _ALPHA_
OP_FRAGMENT(OperandMovRegToReg8B)
OP_FRAGMENT(OperandMovToMem8D)
OP_FRAGMENT(OperandMovToMem16D)
#endif
OP_FRAGMENT(OperandMovToMem32B)
OP_FRAGMENT(OperandMovToMem32D)
OP_FRAGMENT(OperandMovToMem16B)
OP_FRAGMENT(OperandMovToMem16W)
OP_FRAGMENT(OperandMovToMem8B)
OP_FRAGMENT(OperandMovToReg)
OP_FRAGMENT(OperandMovRegToReg32)
OP_FRAGMENT(OperandMovRegToReg16)
OP_FRAGMENT(OperandMovRegToReg8)
OP_FRAGMENT(OperandImm)
OP_FRAGMENT(OperandRegRef)
OP_FRAGMENT(OperandRegVal)
OP_FRAGMENT(LoadCacheReg)
ULONG GenOperandAddr(
PULONG CodeLocation,
POPERAND Operand,
ULONG OperandNumber,
ULONG FsOverride
);
#undef FRAGMENT
#undef PATCH_FRAGMENT
#undef OP_FRAGMENT