]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseLib/X64/SwitchStack.S
1. Remove .extern from GCC assembly.
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / SwitchStack.S
CommitLineData
b1ff428c 1#------------------------------------------------------------------------------\r
2#\r
3# Copyright (c) 2006 - 2008, Intel Corporation\r
4# All rights reserved. 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 - Pointer to new stack.\r
32#\r
33# Returns:\r
34#\r
35# None\r
36#\r
37#------------------------------------------------------------------------------\r
d5172f91 38ASM_GLOBAL ASM_PFX(InternalSwitchStack)\r
b1ff428c 39ASM_PFX(InternalSwitchStack):\r
40 mov %rcx, %rax\r
41 mov %rdx, %rcx\r
42 mov %r8, %rdx\r
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
47 lea -0x20(%r9), %rsp\r
48 call *%rax\r