[PATCH v2 0/4] MR375: ntdll: Fixes for runtime 64-bit shift functions.

Jinoh Kang (@iamahuman) wine at gitlab.winehq.org
Wed Jul 6 10:50:54 CDT 2022


Jinoh Kang (@iamahuman) commented about dlls/ntdll/large_int.c:
> - * Shift a 64 bit integer to the left.
> - *
> - * PARAMS
> - *  a [I] Initial number.
> - *  b [I] Number to shift a by to the left.
> - *
> - * RETURNS
> - *  The left-shifted value.
>   */
> -LONGLONG WINAPI _allshl( LONGLONG a, LONG b )
> +__ASM_GLOBAL_FUNC( _allshl,
> +                   "xchgl (%esp),%ecx\n\t"
> +                   "pushl %edx\n\t"
> +                   "pushl %eax\n\t"
> +                   "pushl %ecx\n\t"
> +                   "jmp " __ASM_NAME("__regs__allshl") )
We need to either drop the tail call or switch `__regs__allshl` to stdcall.

It might not have been caught by the test due to use of frame pointer.

(Ditto for other functions.)

-- 
https://gitlab.winehq.org/wine/wine/-/merge_requests/375#note_3463



More information about the wine-devel mailing list