X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FLibrary%2FBaseLib%2FX64%2FLongJump.S;h=5256529f06213dd6e25aa4d4d7abeca396950744;hp=c135d3bd0654d1fb09ff13f122519538d37b6ee8;hb=9095d37b8fe5bfc3d02adad6ba7fd7359ebc0107;hpb=2faf4da5f757acc60e690c13e41d7c46ba6d8613 diff --git a/MdePkg/Library/BaseLib/X64/LongJump.S b/MdePkg/Library/BaseLib/X64/LongJump.S index c135d3bd06..5256529f06 100644 --- a/MdePkg/Library/BaseLib/X64/LongJump.S +++ b/MdePkg/Library/BaseLib/X64/LongJump.S @@ -1,10 +1,10 @@ #------------------------------------------------------------------------------ # -# Copyright (c) 2006 -2008, Intel Corporation -# All rights reserved. This program and the accompanying materials +# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php +# http://opensource.org/licenses/bsd-license.php. # # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. @@ -27,7 +27,7 @@ # IN UINTN Value # ); #------------------------------------------------------------------------------ -.global ASM_PFX(InternalLongJump) +ASM_GLOBAL ASM_PFX(InternalLongJump) ASM_PFX(InternalLongJump): mov (%rcx), %rbx mov 0x8(%rcx), %rsp @@ -38,5 +38,17 @@ ASM_PFX(InternalLongJump): mov 0x30(%rcx), %r13 mov 0x38(%rcx), %r14 mov 0x40(%rcx), %r15 + # load non-volatile fp registers + ldmxcsr 0x50(%rcx) + movdqu 0x58(%rcx), %xmm6 + movdqu 0x68(%rcx), %xmm7 + movdqu 0x78(%rcx), %xmm8 + movdqu 0x88(%rcx), %xmm9 + movdqu 0x98(%rcx), %xmm10 + movdqu 0xA8(%rcx), %xmm11 + movdqu 0xB8(%rcx), %xmm12 + movdqu 0xC8(%rcx), %xmm13 + movdqu 0xD8(%rcx), %xmm14 + movdqu 0xE8(%rcx), %xmm15 mov %rdx, %rax # set return value jmp *0x48(%rcx)