]> git.proxmox.com Git - mirror_edk2.git/blame - UnixPkg/Library/UnixBaseLib/X64/SwitchStack.S
Adding Simple Pointer, GOP, SimpleTextInEx, and Networking protocols to the emulator...
[mirror_edk2.git] / UnixPkg / Library / UnixBaseLib / X64 / SwitchStack.S
CommitLineData
5fc3b5d6 1#------------------------------------------------------------------------------\r
2#\r
3# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
4# This program and the accompanying materials\r
5# are licensed and made available under the terms and conditions of the BSD License\r
6# which accompanies this distribution. The full text of the license may be found at\r
7# http://opensource.org/licenses/bsd-license.php.\r
8#\r
9# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11#\r
12# Module Name:\r
13#\r
14# SwitchStack.S\r
15#\r
16# Abstract:\r
17#\r
18#------------------------------------------------------------------------------\r
19\r
20\r
21#------------------------------------------------------------------------------\r
22# Routine Description:\r
23#\r
24# Routine for switching stacks with 2 parameters\r
25#\r
26# Arguments:\r
27#\r
28# (rcx) EntryPoint - Entry point with new stack.\r
29# (rdx) Context1 - Parameter1 for entry point.\r
30# (r8) Context2 - Parameter2 for entry point.\r
31# (r9) NewStack - The pointer to new stack.\r
32#\r
33# Returns:\r
34#\r
35# None\r
36#\r
37#------------------------------------------------------------------------------\r
5fc3b5d6 38ASM_GLOBAL ASM_PFX(InternalSwitchStack)\r
39ASM_PFX(InternalSwitchStack):\r
bb111c23 40 movq %rcx, %rax\r
41 movq %rdx, %rcx\r
42 movq %r8, %rdx\r
5fc3b5d6 43 #\r
44 # Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,\r
45 # in case the callee wishes to spill them.\r
46 #\r
2ff79f2e 47 lea -0x20(%r9), %rsp\r
5fc3b5d6 48 call *%rax\r