+++ /dev/null
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2012, 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
-#\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
-# Module Name:\r
-#\r
-# SetJump.S\r
-#\r
-# Abstract:\r
-#\r
-# Implementation of SetJump() on x86_64\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EdkIIGlueBase.h>\r
-\r
-.globl ASM_PFX(SetJump)\r
-ASM_PFX(SetJump):\r
- push %rcx\r
- add $0xffffffffffffffe0,%rsp\r
- call ASM_PFX(InternalAssertJumpBuffer)\r
- add $0x20,%rsp\r
- pop %rcx\r
- pop %rdx\r
- mov %rbx,(%rcx)\r
- mov %rsp,0x8(%rcx)\r
- mov %rbp,0x10(%rcx)\r
- mov %rdi,0x18(%rcx)\r
- mov %rsi,0x20(%rcx)\r
- mov %r12,0x28(%rcx)\r
- mov %r13,0x30(%rcx)\r
- 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
- movdqu %xmm6, 0x58(%rcx) \r
- movdqu %xmm7, 0x68(%rcx)\r
- movdqu %xmm8, 0x78(%rcx)\r
- movdqu %xmm9, 0x88(%rcx)\r
- movdqu %xmm10, 0x98(%rcx)\r
- movdqu %xmm11, 0xA8(%rcx)\r
- movdqu %xmm12, 0xB8(%rcx)\r
- movdqu %xmm13, 0xC8(%rcx)\r
- movdqu %xmm14, 0xD8(%rcx)\r
- movdqu %xmm15, 0xE8(%rcx) \r
- xor %rax,%rax\r
- jmpq *%rdx\r