Re: [openssl-dev] [openssl.org #4046] Fix xmm6 register clobbering in crypto/bn/asm/x86_64-mont5.pl:bn_power5() under Win64

7 views
Skip to first unread message

Andy Polyakov via RT

unread,
Jul 31, 2016, 9:11:02 AM7/31/16
to
Hi,

> i had some problems on Win64 using BIO_do_handshake/BIO_should_retry in a loop. The compiler optimizer placed a local variable value in the xmm6 register.
> The content of this register was destroyed after calling BIO_do_handshake. I debugged this and found that the xmm6/xmm7 registers were not restored.
> I fixed this with following diff for openssl-1.0.2d / x86_64-mont5.pl (bn_power5 and bn_from_mont8x):
>
> 1013a1014,1020
>> ___
>> $code.=<<___ if ($win64);
>> movaps -88(%rsi),%xmm6
>> movaps -72(%rsi),%xmm7
>> ___
>> $code.=<<___;
>>
> 2005a2013,2019
>> ___
>> $code.=<<___ if ($win64);
>> movaps -88(%rsi),%xmm6
>> movaps -72(%rsi),%xmm7
>> ___
>> $code.=<<___;
>>
>
> The fix in bn_from_mont8x was not necessary for me but i think the lines are also missing there.

This resolved itself it the course of fixing other problems. Thanks for
report!



--
Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4046
Please log in as guest with password guest if prompted

--
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply all
Reply to author
Forward
0 new messages