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

Zebediah Figura (she/her) zfigura at codeweavers.com
Wed Jul 6 21:49:46 CDT 2022


On 7/6/22 10:50, Jinoh Kang (@iamahuman) wrote:
> 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.)
> 

Yes, that was a mistake on my part; I second-guessed the calling 
convention one too many times. Thanks for catching it.



More information about the wine-devel mailing list