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