diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c index 751335f36f3..adb1a3dafea 100644 --- a/tools/winebuild/import.c +++ b/tools/winebuild/import.c @@ -1700,7 +1700,7 @@ void output_syscalls( DLLSPEC *spec ) output( "\tmovl $%s,%%edx\n", asm_name("__wine_syscall") ); } output( "\tcall *%%edx\n" ); - output( "\tret $%u\n", get_args_size( odp )); + output( "\tret $%u\n", odp->type == TYPE_STDCALL ? get_args_size( odp ) : 0 ); break; case CPU_x86_64: /* Chromium depends on syscall thunks having the same form as on diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c index 54fffd8a1b2..2e6424fe76a 100644 --- a/tools/winebuild/parser.c +++ b/tools/winebuild/parser.c @@ -323,9 +323,9 @@ static int parse_spec_arguments( ORDDEF *odp, DLLSPEC *spec, int optional ) } if (odp->flags & FLAG_SYSCALL) { - if (odp->type != TYPE_STDCALL) + if (odp->type != TYPE_STDCALL && odp->type != TYPE_CDECL) { - error( "A syscall function must use the stdcall convention\n" ); + error( "A syscall function must use either the stdcall or the cdecl convention\n" ); return 0; } }