From c6bdaf1ff09b3612e3d842e0efa16f4a78fb3a01 Mon Sep 17 00:00:00 2001 From: John Chen Date: Thu, 10 Nov 2016 17:49:02 -0800 Subject: [PATCH] Save registers xmm8..15 on Mac OSX (dotnet/coreclr#8078) On x64, JIT can generate code that uses all 16 xmm registers. However, on Mac OSX, we currently only save 8 of these registers. Thus after a context save/restore, xmm8 through xmm15 are corrupted. This commit fixes the code to save all 16 xmm registers. It resolves issue dotnet/coreclr#2266. Commit migrated from https://github.com/dotnet/coreclr/commit/1b0dad67bc88bd4a45f59e63c6bf9fd5e7eb8596 --- src/coreclr/src/pal/src/thread/context.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/src/pal/src/thread/context.cpp b/src/coreclr/src/pal/src/thread/context.cpp index 6a4a7e9..504eca1 100644 --- a/src/coreclr/src/pal/src/thread/context.cpp +++ b/src/coreclr/src/pal/src/thread/context.cpp @@ -1033,7 +1033,7 @@ CONTEXT_GetThreadContextFromThreadState( memcpy(&lpContext->FltSave.FloatRegisters[i], (&pState->__fpu_stmm0)[i].__mmst_reg, 10); // AMD64's FLOATING_POINT includes the xmm registers. - memcpy(&lpContext->Xmm0, &pState->__fpu_xmm0, 8 * 16); + memcpy(&lpContext->Xmm0, &pState->__fpu_xmm0, 16 * 16); } break; #else -- 2.7.4