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 "selectors.h"
|
||||||
#include "stackframe.h"
|
#include "stackframe.h"
|
||||||
#include "syslevel.h"
|
#include "syslevel.h"
|
||||||
#include "main.h"
|
|
||||||
#include "module.h"
|
#include "module.h"
|
||||||
#include "debugtools.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
|
* (esp-8) ptr to relay entry code for RELAY_CallFrom32Regs
|
||||||
* ... >128 bytes space free to be modified (ensured by the assembly glue)
|
* ... >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 )
|
void WINAPI RELAY_DoCallFrom32Regs( CONTEXT86 *context )
|
||||||
{
|
{
|
||||||
char buffer[80];
|
char buffer[80];
|
||||||
|
@ -390,6 +386,10 @@ void WINAPI RELAY_DoCallFrom32Regs( CONTEXT86 *context )
|
||||||
SYSLEVEL_CheckNotLevel( 2 );
|
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
|
* RELAY_SetupDLL
|
||||||
|
|
|
@ -258,8 +258,6 @@ SNOOP_PrintArg(DWORD x) {
|
||||||
|
|
||||||
#define CALLER1REF (*(DWORD*)context->Esp)
|
#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 )
|
void WINAPI SNOOP_DoEntry( CONTEXT86 *context )
|
||||||
{
|
{
|
||||||
DWORD ordinal=0,entry = context->Eip - 5;
|
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);
|
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 )
|
void WINAPI SNOOP_DoReturn( CONTEXT86 *context )
|
||||||
{
|
{
|
||||||
SNOOP_RETURNENTRY *ret = (SNOOP_RETURNENTRY*)(context->Eip - 5);
|
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 );
|
context->Eax,(DWORD)ret->origreturn,context->SegFs );
|
||||||
ret->origreturn = NULL; /* mark as empty */
|
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__ */
|
#else /* !__i386__ */
|
||||||
void SNOOP_RegisterDLL(HMODULE hmod,LPCSTR name,DWORD nrofordinals) {
|
void SNOOP_RegisterDLL(HMODULE hmod,LPCSTR name,DWORD nrofordinals) {
|
||||||
FIXME("snooping works only on i386 for now.\n");
|
FIXME("snooping works only on i386 for now.\n");
|
||||||
|
|
Loading…
Reference in New Issue