1;------------------------------------------------------------------------------ 2; 3; Copyright (c) 2006 - 2008, 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. 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.Asm 15; 16; Abstract: 17; 18;------------------------------------------------------------------------------ 19 20 .code 21 22;------------------------------------------------------------------------------ 23; Routine Description: 24; 25; Routine for switching stacks with 2 parameters 26; 27; Arguments: 28; 29; (rcx) EntryPoint - Entry point with new stack. 30; (rdx) Context1 - Parameter1 for entry point. 31; (r8) Context2 - Parameter2 for entry point. 32; (r9) NewStack - The pointer to new stack. 33; 34; Returns: 35; 36; None 37; 38;------------------------------------------------------------------------------ 39InternalSwitchStack PROC 40 mov rax, rcx 41 mov rcx, rdx 42 mov rdx, r8 43 ; 44 ; Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack, 45 ; in case the callee wishes to spill them. 46 ; 47 lea rsp, [r9 - 20h] 48 call rax 49InternalSwitchStack ENDP 50 51 END 52