]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseLib/X64/SwitchStack.S
Gcc cleanup for baselib & basememorylib in mdepkg/library/
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / SwitchStack.S
CommitLineData
f1baef62 1#------------------------------------------------------------------------------
2#
d2e6d788 3# Copyright (c) 2006 - 2008, Intel Corporation
f1baef62 4# All rights reserved. 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
8#
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.
11#
12# Module Name:
13#
14# SwitchStack.S
15#
16# Abstract:
17#
18#------------------------------------------------------------------------------
19
20
21#------------------------------------------------------------------------------
22# Routine Description:
23#
d2e6d788 24# Routine for switching stacks with 2 parameters
f1baef62 25#
26# Arguments:
27#
d2e6d788 28# (rcx) EntryPoint - Entry point with new stack.
29# (rdx) Context1 - Parameter1 for entry point.
30# (r8) Context2 - Parameter2 for entry point.
31# (r9) NewStack - Pointer to new stack.
f1baef62 32#
33# Returns:
34#
35# None
36#
37#------------------------------------------------------------------------------
85c25283 38.global ASM_PFX(InternalSwitchStack)
39ASM_PFX(InternalSwitchStack):
f1baef62 40 mov %rcx, %rax
41 mov %rdx, %rcx
42 mov %r8, %rdx
85c25283 43 #
44 # Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,
45 # in case the callee wishes to spill them.
d2e6d788 46 #
f1baef62 47 lea -0x20(%r9), %rsp
48 call *%rax