From 4986f42b9f3087039d9fa5578514a6742148eed3 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 6 Jan 2009 12:49:18 +0100 Subject: [PATCH] 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 c1c53c37be6..de274348767 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 ced68d9bd51..9d7ba6a8354 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 6dec576f444..4fae06e3f0f 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 47788e6331f..32c39f3c7f2 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 ) /***********************************************************************