Home | History | Annotate | Download | only in Ia32
      1 ;------------------------------------------------------------------------------
      2 ;
      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.
      9 ;
     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.
     12 ;
     13 ; Module Name:
     14 ;
     15 ;   InternalSwitchStack.nasm
     16 ;
     17 ; Abstract:
     18 ;
     19 ;   Implementation of a stack switch on IA-32.
     20 ;
     21 ;------------------------------------------------------------------------------
     22 
     23     SECTION .text
     24 
     25 ;------------------------------------------------------------------------------
     26 ; VOID
     27 ; EFIAPI
     28 ; InternalSwitchStack (
     29 ;   IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
     30 ;   IN      VOID                      *Context1,   OPTIONAL
     31 ;   IN      VOID                      *Context2,   OPTIONAL
     32 ;   IN      VOID                      *NewStack
     33 ;   );
     34 ;------------------------------------------------------------------------------
     35 global ASM_PFX(InternalSwitchStack)
     36 ASM_PFX(InternalSwitchStack):
     37   push  ebp
     38   mov   ebp, esp
     39 
     40   mov   esp, [ebp + 20]    ; switch stack
     41   sub   esp, 8
     42   mov   eax, [ebp + 16]
     43   mov   [esp + 4], eax
     44   mov   eax, [ebp + 12]
     45   mov   [esp], eax
     46   push  0                  ; keeps gdb from unwinding stack
     47   jmp   dword [ebp + 8]    ; call and never return
     48