Use __ASM_GLOBAL_FUNC directly in i386-only code.
This commit is contained in:
parent
a67369ea00
commit
85d666aef1
|
@ -14,7 +14,6 @@
|
|||
#include "selectors.h"
|
||||
#include "stackframe.h"
|
||||
#include "syslevel.h"
|
||||
#include "main.h"
|
||||
#include "module.h"
|
||||
#include "debugtools.h"
|
||||
|
||||
|
@ -304,9 +303,6 @@ static LONGLONG RELAY_CallFrom32( int ret_addr, ... )
|
|||
* (esp-8) ptr to relay entry code for RELAY_CallFrom32Regs
|
||||
* ... >128 bytes space free to be modified (ensured by the assembly glue)
|
||||
*/
|
||||
|
||||
void WINAPI RELAY_DoCallFrom32Regs( CONTEXT86 *context );
|
||||
DEFINE_REGS_ENTRYPOINT_0( RELAY_CallFrom32Regs, RELAY_DoCallFrom32Regs )
|
||||
void WINAPI RELAY_DoCallFrom32Regs( CONTEXT86 *context )
|
||||
{
|
||||
char buffer[80];
|
||||
|
@ -390,6 +386,10 @@ void WINAPI RELAY_DoCallFrom32Regs( CONTEXT86 *context )
|
|||
SYSLEVEL_CheckNotLevel( 2 );
|
||||
}
|
||||
|
||||
void WINAPI RELAY_CallFrom32Regs(void);
|
||||
__ASM_GLOBAL_FUNC( RELAY_CallFrom32Regs,
|
||||
"call " __ASM_NAME("CALL32_Regs") "\n\t"
|
||||
".long " __ASM_NAME("RELAY_DoCallFrom32Regs") ",0" );
|
||||
|
||||
/***********************************************************************
|
||||
* RELAY_SetupDLL
|
||||
|
|
|
@ -258,8 +258,6 @@ SNOOP_PrintArg(DWORD x) {
|
|||
|
||||
#define CALLER1REF (*(DWORD*)context->Esp)
|
||||
|
||||
void WINAPI SNOOP_DoEntry( CONTEXT86 *context );
|
||||
DEFINE_REGS_ENTRYPOINT_0( SNOOP_Entry, SNOOP_DoEntry );
|
||||
void WINAPI SNOOP_DoEntry( CONTEXT86 *context )
|
||||
{
|
||||
DWORD ordinal=0,entry = context->Eip - 5;
|
||||
|
@ -340,8 +338,7 @@ void WINAPI SNOOP_DoEntry( CONTEXT86 *context )
|
|||
DPRINTF(") ret=%08lx fs=%04lx\n",(DWORD)ret->origreturn,context->SegFs);
|
||||
}
|
||||
|
||||
void WINAPI SNOOP_DoReturn( CONTEXT86 *context );
|
||||
DEFINE_REGS_ENTRYPOINT_0( SNOOP_Return, SNOOP_DoReturn );
|
||||
|
||||
void WINAPI SNOOP_DoReturn( CONTEXT86 *context )
|
||||
{
|
||||
SNOOP_RETURNENTRY *ret = (SNOOP_RETURNENTRY*)(context->Eip - 5);
|
||||
|
@ -373,6 +370,15 @@ void WINAPI SNOOP_DoReturn( CONTEXT86 *context )
|
|||
context->Eax,(DWORD)ret->origreturn,context->SegFs );
|
||||
ret->origreturn = NULL; /* mark as empty */
|
||||
}
|
||||
|
||||
/* assembly wrappers that save the context */
|
||||
__ASM_GLOBAL_FUNC( SNOOP_Entry,
|
||||
"call " __ASM_NAME("CALL32_Regs") "\n\t"
|
||||
".long " __ASM_NAME("SNOOP_DoEntry") ",0" );
|
||||
__ASM_GLOBAL_FUNC( SNOOP_Return,
|
||||
"call " __ASM_NAME("CALL32_Regs") "\n\t"
|
||||
".long " __ASM_NAME("SNOOP_DoReturn") ",0" );
|
||||
|
||||
#else /* !__i386__ */
|
||||
void SNOOP_RegisterDLL(HMODULE hmod,LPCSTR name,DWORD nrofordinals) {
|
||||
FIXME("snooping works only on i386 for now.\n");
|
||||
|
|
Loading…
Reference in New Issue