Paul Gofman : ntdll: Don't transfer xmm registers explicitly during context save and restore on x64.

Alexandre Julliard julliard at winehq.org
Wed Aug 19 15:46:01 CDT 2020


Module: wine
Branch: master
Commit: f332f2e4e28e9618e7b4a65e9352915cf9772e93
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f332f2e4e28e9618e7b4a65e9352915cf9772e93

Author: Paul Gofman <pgofman at codeweavers.com>
Date:   Tue Aug 18 02:11:59 2020 +0300

ntdll: Don't transfer xmm registers explicitly during context save and restore on x64.

fxsave / fxrstor already do that.

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/signal_x86_64.c      | 18 +-----------------
 dlls/ntdll/unix/signal_x86_64.c | 18 +-----------------
 2 files changed, 2 insertions(+), 34 deletions(-)

diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index faf24b93b5..40ed53c10d 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -340,23 +340,7 @@ __ASM_GLOBAL_FUNC( RtlCaptureContext,
                    "movq %r15,0xf0(%rcx)\n\t"       /* context->R15 */
                    "movq (%rsp),%rax\n\t"
                    "movq %rax,0xf8(%rcx)\n\t"       /* context->Rip */
-                   "fxsave 0x100(%rcx)\n\t"         /* context->FtlSave */
-                   "movdqa %xmm0,0x1a0(%rcx)\n\t"   /* context->Xmm0 */
-                   "movdqa %xmm1,0x1b0(%rcx)\n\t"   /* context->Xmm1 */
-                   "movdqa %xmm2,0x1c0(%rcx)\n\t"   /* context->Xmm2 */
-                   "movdqa %xmm3,0x1d0(%rcx)\n\t"   /* context->Xmm3 */
-                   "movdqa %xmm4,0x1e0(%rcx)\n\t"   /* context->Xmm4 */
-                   "movdqa %xmm5,0x1f0(%rcx)\n\t"   /* context->Xmm5 */
-                   "movdqa %xmm6,0x200(%rcx)\n\t"   /* context->Xmm6 */
-                   "movdqa %xmm7,0x210(%rcx)\n\t"   /* context->Xmm7 */
-                   "movdqa %xmm8,0x220(%rcx)\n\t"   /* context->Xmm8 */
-                   "movdqa %xmm9,0x230(%rcx)\n\t"   /* context->Xmm9 */
-                   "movdqa %xmm10,0x240(%rcx)\n\t"  /* context->Xmm10 */
-                   "movdqa %xmm11,0x250(%rcx)\n\t"  /* context->Xmm11 */
-                   "movdqa %xmm12,0x260(%rcx)\n\t"  /* context->Xmm12 */
-                   "movdqa %xmm13,0x270(%rcx)\n\t"  /* context->Xmm13 */
-                   "movdqa %xmm14,0x280(%rcx)\n\t"  /* context->Xmm14 */
-                   "movdqa %xmm15,0x290(%rcx)\n\t"  /* context->Xmm15 */
+                   "fxsave 0x100(%rcx)\n\t"         /* context->FltSave */
                    "ret" );
 
 /******************************************************************************
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index a1918908fc..6f01b76c5a 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -1507,23 +1507,7 @@ __ASM_GLOBAL_FUNC( set_full_cpu_context,
                    "movq 0xf0(%rdi),%r15\n\t"       /* context->R15 */
                    "movq 0xf8(%rdi),%rax\n\t"       /* context->Rip */
                    "movq %rax,(%rsp)\n\t"
-                   "fxrstor 0x100(%rdi)\n\t"        /* context->FtlSave */
-                   "movdqa 0x1a0(%rdi),%xmm0\n\t"   /* context->Xmm0 */
-                   "movdqa 0x1b0(%rdi),%xmm1\n\t"   /* context->Xmm1 */
-                   "movdqa 0x1c0(%rdi),%xmm2\n\t"   /* context->Xmm2 */
-                   "movdqa 0x1d0(%rdi),%xmm3\n\t"   /* context->Xmm3 */
-                   "movdqa 0x1e0(%rdi),%xmm4\n\t"   /* context->Xmm4 */
-                   "movdqa 0x1f0(%rdi),%xmm5\n\t"   /* context->Xmm5 */
-                   "movdqa 0x200(%rdi),%xmm6\n\t"   /* context->Xmm6 */
-                   "movdqa 0x210(%rdi),%xmm7\n\t"   /* context->Xmm7 */
-                   "movdqa 0x220(%rdi),%xmm8\n\t"   /* context->Xmm8 */
-                   "movdqa 0x230(%rdi),%xmm9\n\t"   /* context->Xmm9 */
-                   "movdqa 0x240(%rdi),%xmm10\n\t"  /* context->Xmm10 */
-                   "movdqa 0x250(%rdi),%xmm11\n\t"  /* context->Xmm11 */
-                   "movdqa 0x260(%rdi),%xmm12\n\t"  /* context->Xmm12 */
-                   "movdqa 0x270(%rdi),%xmm13\n\t"  /* context->Xmm13 */
-                   "movdqa 0x280(%rdi),%xmm14\n\t"  /* context->Xmm14 */
-                   "movdqa 0x290(%rdi),%xmm15\n\t"  /* context->Xmm15 */
+                   "fxrstor 0x100(%rdi)\n\t"        /* context->FltSave */
                    "movq 0x78(%rdi),%rax\n\t"       /* context->Rax */
                    "movq 0xb0(%rdi),%rdi\n\t"       /* context->Rdi */
                    "iretq" );




More information about the wine-cvs mailing list