]> granicus.if.org Git - libjpeg-turbo/commit
Fix Win64 ABI conformance when using xmm8-xmm11
authormayeut <mayeut@users.noreply.github.com>
Sat, 24 Feb 2018 13:50:56 +0000 (14:50 +0100)
committerDRC <information@libjpeg-turbo.org>
Tue, 27 Feb 2018 00:00:15 +0000 (18:00 -0600)
commit0dd9a2c1fd6c232021f66750d2b2846d5a646faf
treeaf63ddec6dde175fc1ce2b4b1db901543e35167e
parent700de8aa81254a2a3cff063f00a1b37ca630599d
Fix Win64 ABI conformance when using xmm8-xmm11

Referring to https://docs.microsoft.com/en-US/cpp/build/stack-usage:

"All memory beyond the current address of RSP is considered volatile:
The OS, or a debugger, may overwrite this memory during a user debug
session, or an interrupt handler.  Thus, RSP must always be set before
attempting to read or write values to a stack frame."

Basically, if-- under extremely rare circumstances-- a context swap were
to occur between saving the values of xmm8-xmm11 and setting the new
value of rsp, the O/S might not preserve that area of the stack.  In
general, libjpeg-turbo should not be using xmm8-xmm11 before or after
the call to jsimd_huff_encode_one_block_sse2(), so this is probably a
non-issue, but it's still a good idea to fix it.

Based on
https://github.com/mayeut/libjpeg-turbo/commit/ff7d2030dd26c7b8c37ff540c594490198843f15
simd/jchuff-sse2-64.asm