[PATCH 5/8] ntdll: Add detection for PF_SSE_DAZ_MODE_AVAILABLE

James Eder jimportal at gmail.com
Sun Oct 21 10:49:24 CDT 2012


On Sat, Oct 20, 2012 at 7:06 PM, Chris Robinson <chris.kcat at gmail.com> wrote:
> On 10/20/2012 05:40 PM, James Eder wrote:
>>
>> +    /* Intel says we need a zeroed 16-byte aligned buffer */
>> +    char buffer[512 + 16];
>> +    XMM_SAVE_AREA32 *state = (XMM_SAVE_AREA32 *)(((ULONG_PTR)buffer + 15)
>> & ~15);
>> +    memset(buffer, 0, sizeof(buffer));
>> +
>> +    __asm__ __volatile__( "fxsave %0" : "=m" (*state) : "m" (*state) );
>
>
> Wouldn't this be simpler?
>
> DECLSPEC_ALIGN(16) XMM_SAVE_AREA32 state;
> memset(state, 0, sizeof(state));
> __asm__ __volatile__("fxsave %0" : "=m" (*&state) : "m" (*&state));
>
> May also want to make sure the two structs are packed.
>
>
I used  that alignment method because I saw it done that way other
places in Wine.  I figured there must have been a good reason for
doing it that way (issue with some build environments?) but perhaps
I'm being paranoid.


-- 
Jim



More information about the wine-devel mailing list