]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Save/Restore xmm6-xmm15 in function setJump/longJump for GAS.
authorgikidy <gikidy@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 10 Jun 2009 08:07:37 +0000 (08:07 +0000)
committergikidy <gikidy@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 10 Jun 2009 08:07:37 +0000 (08:07 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8507 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/BaseLib/X64/LongJump.S
MdePkg/Library/BaseLib/X64/SetJump.S

index d43fcf000fedc9b3ac95132fea61f842cde75792..a0fe61f8e7cd451d45f316c0f002b42e9405111b 100644 (file)
@@ -38,5 +38,17 @@ ASM_PFX(InternalLongJump):
     mov     0x30(%rcx), %r13\r
     mov     0x38(%rcx), %r14\r
     mov     0x40(%rcx), %r15\r
+    # load non-volatile fp registers\r
+    ldmxcsr 0x50(%rcx)\r
+    movdqa  0x58(%rcx), %xmm6\r
+    movdqa  0x68(%rcx), %xmm7\r
+    movdqa  0x78(%rcx), %xmm8\r
+    movdqa  0x88(%rcx), %xmm9\r
+    movdqa  0x98(%rcx), %xmm10\r
+    movdqa  0xA8(%rcx), %xmm11\r
+    movdqa  0xB8(%rcx), %xmm12\r
+    movdqa  0xC8(%rcx), %xmm13\r
+    movdqa  0xD8(%rcx), %xmm14\r
+    movdqa  0xE8(%rcx), %xmm15  \r
     mov     %rdx, %rax          # set return value\r
     jmp     *0x48(%rcx)\r
index d8454d3965ee64e876c9d91687bd2cfaf4085d39..3ba5be6f15df4b22d079e40f99cfed8261938b47 100644 (file)
@@ -37,5 +37,17 @@ ASM_PFX(SetJump):
     mov    %r14,0x38(%rcx)\r
     mov    %r15,0x40(%rcx)\r
     mov    %rdx,0x48(%rcx)\r
+    # save non-volatile fp registers\r
+    stmxcsr 0x50(%rcx)\r
+    movdqa  %xmm6, 0x58(%rcx) \r
+    movdqa  %xmm7, 0x68(%rcx)\r
+    movdqa  %xmm8, 0x78(%rcx)\r
+    movdqa  %xmm9, 0x88(%rcx)\r
+    movdqa  %xmm10, 0x98(%rcx)\r
+    movdqa  %xmm11, 0xA8(%rcx)\r
+    movdqa  %xmm12, 0xB8(%rcx)\r
+    movdqa  %xmm13, 0xC8(%rcx)\r
+    movdqa  %xmm14, 0xD8(%rcx)\r
+    movdqa  %xmm15, 0xE8(%rcx)     \r
     xor    %rax,%rax\r
     jmpq   *%rdx\r