1 ;------------------------------------------------------------------------------
3 ; Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
4 ; Portions copyright (c) 2011, Apple Inc. All rights reserved.<BR>
5 ; This program and the accompanying materials
6 ; are licensed and made available under the terms and conditions of the BSD License
7 ; which accompanies this distribution. The full text of the license may be found at
8 ; http://opensource.org/licenses/bsd-license.php.
10 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 ; InternalSwitchStack.nasm
19 ; Implementation of a stack switch on IA-32.
21 ;------------------------------------------------------------------------------
25 ;------------------------------------------------------------------------------
28 ; InternalSwitchStack (
29 ; IN SWITCH_STACK_ENTRY_POINT EntryPoint,
30 ; IN VOID *Context1, OPTIONAL
31 ; IN VOID *Context2, OPTIONAL
34 ;------------------------------------------------------------------------------
35 global ASM_PFX(InternalSwitchStack)
36 ASM_PFX(InternalSwitchStack):
40 mov esp, [ebp + 20] ; switch stack
46 push 0 ; keeps gdb from unwinding stack
47 jmp dword [ebp + 8] ; call and never return