Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 7aa27b9

Browse files
author
John Chen
authored
Save registers xmm8..15 on Mac OSX (#8098)
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 #2266.
1 parent cf5e022 commit 7aa27b9

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/pal/src/thread/context.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -991,7 +991,7 @@ CONTEXT_GetThreadContextFromThreadState(
991991
memcpy(&lpContext->FltSave.FloatRegisters[i], (&pState->__fpu_stmm0)[i].__mmst_reg, 10);
992992

993993
// AMD64's FLOATING_POINT includes the xmm registers.
994-
memcpy(&lpContext->Xmm0, &pState->__fpu_xmm0, 8 * 16);
994+
memcpy(&lpContext->Xmm0, &pState->__fpu_xmm0, 16 * 16);
995995
}
996996
break;
997997
#else
@@ -1218,7 +1218,7 @@ CONTEXT_SetThreadContextOnPort(
12181218
for (int i = 0; i < 8; i++)
12191219
memcpy((&State.__fpu_stmm0)[i].__mmst_reg, &lpContext->FltSave.FloatRegisters[i], 10);
12201220

1221-
memcpy(&State.__fpu_xmm0, &lpContext->Xmm0, 8 * 16);
1221+
memcpy(&State.__fpu_xmm0, &lpContext->Xmm0, 16 * 16);
12221222
#else
12231223
#error Unexpected architecture.
12241224
#endif

0 commit comments

Comments
 (0)