Mike Gibson <mike.gib...@storagecraft.com> writes: > @@ -144,8 +144,23 @@ LONGLONG WINAPI RtlLargeIntegerShiftRight( LONGLONG a, > INT count ) > */ > LONGLONG WINAPI RtlLargeIntegerArithmeticShift( LONGLONG a, INT count ) > { > - /* FIXME: gcc does arithmetic shift here, but it may not be true on all > platforms */ > - return a >> count; > +#ifdef HAVE_SIMPLE_ARITHMETIC_RIGHT_SHIFT > + return a >> count; > +#else > + /* create mask to extend the sign bit */ > + LONGLONG mask; > + mask = ( LONGLONG ) 1 << 63; > + mask &= a; > + mask >>= count;
That's an arithmetic shift, you are only moving the problem. Also your calling convention for the _allsh* functions isn't correct, as a simple test case demonstrates. Do you really have an app that uses this? -- Alexandre Julliard julli...@winehq.org