Alexandre Julliard : ntdll: Change the DEFINE_REGS_ENTRYPOINT macro to use a number of args instead of a size .
Alexandre Julliard
julliard at winehq.org
Tue Jan 6 08:23:10 CST 2009
Module: wine
Branch: master
Commit: 4986f42b9f3087039d9fa5578514a6742148eed3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4986f42b9f3087039d9fa5578514a6742148eed3
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Jan 6 12:49:18 2009 +0100
ntdll: Change the DEFINE_REGS_ENTRYPOINT macro to use a number of args instead of a size.
Also assume that all register functions are stdcall.
---
dlls/ntdll/exception.c | 6 +++---
dlls/ntdll/ntdll_misc.h | 4 ++--
dlls/ntdll/relay.c | 10 ++++------
dlls/ntdll/signal_i386.c | 2 +-
4 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c
index c1c53c3..de27434 100644
--- a/dlls/ntdll/exception.c
+++ b/dlls/ntdll/exception.c
@@ -401,7 +401,7 @@ void WINAPI __regs_RtlCaptureContext( CONTEXT *context_out, CONTEXT *context_in
/**********************************************************************/
#ifdef DEFINE_REGS_ENTRYPOINT
-DEFINE_REGS_ENTRYPOINT( RtlCaptureContext, 4, 4 )
+DEFINE_REGS_ENTRYPOINT( RtlCaptureContext, 1 )
#else
void WINAPI RtlCaptureContext( CONTEXT *context_out )
{
@@ -430,7 +430,7 @@ void WINAPI __regs_RtlRaiseException( EXCEPTION_RECORD *rec, CONTEXT *context )
/**********************************************************************/
#ifdef DEFINE_REGS_ENTRYPOINT
-DEFINE_REGS_ENTRYPOINT( RtlRaiseException, 4, 4 )
+DEFINE_REGS_ENTRYPOINT( RtlRaiseException, 1 )
#else
void WINAPI RtlRaiseException( EXCEPTION_RECORD *rec )
{
@@ -522,7 +522,7 @@ void WINAPI __regs_RtlUnwind( EXCEPTION_REGISTRATION_RECORD* pEndFrame, PVOID un
/**********************************************************************/
#ifdef DEFINE_REGS_ENTRYPOINT
-DEFINE_REGS_ENTRYPOINT( RtlUnwind, 16, 16 )
+DEFINE_REGS_ENTRYPOINT( RtlUnwind, 4 )
#else
void WINAPI RtlUnwind( PVOID pEndFrame, PVOID unusedEip,
PEXCEPTION_RECORD pRecord, PVOID returnEax )
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index ced68d9..9d7ba6a 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -217,12 +217,12 @@ static inline struct ntdll_thread_regs *ntdll_get_thread_regs(void)
/* Register functions */
#ifdef __i386__
-#define DEFINE_REGS_ENTRYPOINT( name, args, pop_args ) \
+#define DEFINE_REGS_ENTRYPOINT( name, args ) \
__ASM_GLOBAL_FUNC( name, \
"pushl %eax\n\t" \
"call " __ASM_NAME("__wine_call_from_32_regs") "\n\t" \
".long " __ASM_NAME("__regs_") #name "-.\n\t" \
- ".byte " #args "," #pop_args )
+ ".byte 4*" #args ",4*" #args )
/* FIXME: add support for other CPUs */
#endif
diff --git a/dlls/ntdll/relay.c b/dlls/ntdll/relay.c
index 6dec576..4fae06e 100644
--- a/dlls/ntdll/relay.c
+++ b/dlls/ntdll/relay.c
@@ -421,7 +421,6 @@ void WINAPI __regs_relay_call_regs( struct relay_descr *descr, unsigned int idx,
{
WORD ordinal = LOWORD(idx);
BYTE nb_args = LOBYTE(HIWORD(idx));
- BYTE flags = HIBYTE(HIWORD(idx));
struct relay_private_data *data = descr->private;
struct relay_entry_point *entry_point = data->entry_points + ordinal;
BYTE *orig_func = entry_point->orig_func;
@@ -431,8 +430,7 @@ void WINAPI __regs_relay_call_regs( struct relay_descr *descr, unsigned int idx,
/* restore the context to what it was before the relay thunk */
context->Eax = orig_eax;
context->Eip = ret_addr;
- if (flags & 2) /* stdcall */
- context->Esp += nb_args * sizeof(int);
+ context->Esp += nb_args * sizeof(int);
if (TRACE_ON(relay))
{
@@ -479,7 +477,7 @@ void WINAPI __regs_relay_call_regs( struct relay_descr *descr, unsigned int idx,
}
}
extern void WINAPI relay_call_regs(void);
-DEFINE_REGS_ENTRYPOINT( relay_call_regs, 16, 16 )
+DEFINE_REGS_ENTRYPOINT( relay_call_regs, 4 )
#endif
@@ -973,8 +971,8 @@ void WINAPI __regs_SNOOP_Return( CONTEXT86 *context )
}
/* assembly wrappers that save the context */
-DEFINE_REGS_ENTRYPOINT( SNOOP_Entry, 0, 0 )
-DEFINE_REGS_ENTRYPOINT( SNOOP_Return, 0, 0 )
+DEFINE_REGS_ENTRYPOINT( SNOOP_Entry, 0 )
+DEFINE_REGS_ENTRYPOINT( SNOOP_Return, 0 )
#else /* __i386__ */
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 47788e6..32c39f3 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -896,7 +896,7 @@ void WINAPI __regs_get_cpu_context( CONTEXT *context, CONTEXT *regs )
if (fpux_support) save_fpux( context );
else save_fpu( context );
}
-DEFINE_REGS_ENTRYPOINT( get_cpu_context, 4, 4 )
+DEFINE_REGS_ENTRYPOINT( get_cpu_context, 1 )
/***********************************************************************
More information about the wine-cvs
mailing list