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