1 ;------------------------------------------------------------------------------
3 ; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4 ; This program and the accompanying materials
5 ; are licensed and made available under the terms and conditions of the BSD License
6 ; which accompanies this distribution. The full text of the license may be found at
7 ; http://opensource.org/licenses/bsd-license.php.
9 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 ; Implementation of _LongJump() on x64.
20 ;------------------------------------------------------------------------------
25 ;------------------------------------------------------------------------------
29 ; IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
32 ;------------------------------------------------------------------------------
33 global ASM_PFX(InternalLongJump)
34 ASM_PFX(InternalLongJump):
44 ; load non-volatile fp registers
46 movdqu xmm6, [rcx + 0x58]
47 movdqu xmm7, [rcx + 0x68]
48 movdqu xmm8, [rcx + 0x78]
49 movdqu xmm9, [rcx + 0x88]
50 movdqu xmm10, [rcx + 0x98]
51 movdqu xmm11, [rcx + 0xA8]
52 movdqu xmm12, [rcx + 0xB8]
53 movdqu xmm13, [rcx + 0xC8]
54 movdqu xmm14, [rcx + 0xD8]
55 movdqu xmm15, [rcx + 0xE8]
56 mov rax, rdx ; set return value
57 jmp qword [rcx + 0x48]