;------------------------------------------------------------------------------\r
;\r
-; Copyright (c) 2006, Intel Corporation\r
-; All rights reserved. This program and the accompanying materials\r
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; This program and the accompanying materials\r
; are licensed and made available under the terms and conditions of the BSD License\r
; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php\r
+; http://opensource.org/licenses/bsd-license.php.\r
;\r
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
.code\r
\r
+EXTERN InternalAssertJumpBuffer:PROC\r
+\r
+;------------------------------------------------------------------------------\r
+; UINTN\r
+; EFIAPI\r
+; SetJump (\r
+; OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer\r
+; );\r
+;------------------------------------------------------------------------------\r
SetJump PROC\r
+ push rcx\r
+ add rsp, -20h\r
+ call InternalAssertJumpBuffer\r
+ add rsp, 20h\r
+ pop rcx\r
pop rdx\r
mov [rcx], rbx\r
mov [rcx + 8], rsp\r
mov [rcx + 38h], r14\r
mov [rcx + 40h], r15\r
mov [rcx + 48h], rdx\r
+ ; save non-volatile fp registers\r
+ stmxcsr [rcx + 50h]\r
+ movdqu [rcx + 58h], xmm6\r
+ movdqu [rcx + 68h], xmm7\r
+ movdqu [rcx + 78h], xmm8\r
+ movdqu [rcx + 88h], xmm9\r
+ movdqu [rcx + 98h], xmm10\r
+ movdqu [rcx + 0A8h], xmm11\r
+ movdqu [rcx + 0B8h], xmm12\r
+ movdqu [rcx + 0C8h], xmm13\r
+ movdqu [rcx + 0D8h], xmm14\r
+ movdqu [rcx + 0E8h], xmm15\r
xor rax, rax\r
jmp rdx\r
SetJump ENDP\r