Alexandre Julliard : wineboot: Fix do_cpuid() calling convention.
Alexandre Julliard
julliard at winehq.org
Sat Jul 6 16:01:24 CDT 2019
Module: wine
Branch: master
Commit: e245df2a0c8d1270a4cc0129407072c917a0c325
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e245df2a0c8d1270a4cc0129407072c917a0c325
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sat Jul 6 12:56:13 2019 +0200
wineboot: Fix do_cpuid() calling convention.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47464
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/wineboot/wineboot.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index 834bf92..55f2c6c 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -185,13 +185,13 @@ static DWORD set_reg_value( HKEY hkey, const WCHAR *name, const WCHAR *value )
return RegSetValueExW( hkey, name, 0, REG_SZ, (const BYTE *)value, (lstrlenW(value) + 1) * sizeof(WCHAR) );
}
-extern void do_cpuid( unsigned int ax, unsigned int *p );
#if defined(_MSC_VER)
-void do_cpuid( unsigned int ax, unsigned int *p )
+static void do_cpuid( unsigned int ax, unsigned int *p )
{
__cpuid( p, ax );
}
#elif defined(__i386__)
+extern void __cdecl do_cpuid( unsigned int ax, unsigned int *p );
__ASM_GLOBAL_FUNC( do_cpuid,
"pushl %esi\n\t"
"pushl %ebx\n\t"
@@ -206,18 +206,22 @@ __ASM_GLOBAL_FUNC( do_cpuid,
"popl %esi\n\t"
"ret" )
#elif defined(__x86_64__)
+extern void __cdecl do_cpuid( unsigned int ax, unsigned int *p );
__ASM_GLOBAL_FUNC( do_cpuid,
+ "pushq %rsi\n\t"
"pushq %rbx\n\t"
- "movl %edi,%eax\n\t"
+ "movq %rcx,%rax\n\t"
+ "movq %rdx,%rsi\n\t"
"cpuid\n\t"
"movl %eax,(%rsi)\n\t"
"movl %ebx,4(%rsi)\n\t"
"movl %ecx,8(%rsi)\n\t"
"movl %edx,12(%rsi)\n\t"
"popq %rbx\n\t"
+ "popq %rsi\n\t"
"ret" )
#else
-void do_cpuid( unsigned int ax, unsigned int *p )
+static void do_cpuid( unsigned int ax, unsigned int *p )
{
FIXME("\n");
}
More information about the wine-cvs
mailing list