]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFspPkg/Library/BaseFspSwitchStackLib/Ia32/Stack.asm
DynamicTablesPkg: GTDT updates for ACPI 6.3
[mirror_edk2.git] / IntelFspPkg / Library / BaseFspSwitchStackLib / Ia32 / Stack.asm
1 ;------------------------------------------------------------------------------
2 ;
3 ; Copyright (c) 2014 - 2015, Intel Corporation. All rights reserved.<BR>
4 ; SPDX-License-Identifier: BSD-2-Clause-Patent
5 ;
6 ; Abstract:
7 ;
8 ; Switch the stack from temporary memory to permenent memory.
9 ;
10 ;------------------------------------------------------------------------------
11
12 .586p
13 .model flat,C
14 .code
15
16 ;------------------------------------------------------------------------------
17 ; UINT32
18 ; EFIAPI
19 ; Pei2LoaderSwitchStack (
20 ; VOID
21 ; )
22 ;------------------------------------------------------------------------------
23 EXTERNDEF C MeasurePoint:PROC
24 Pei2LoaderSwitchStack PROC C PUBLIC
25 xor eax, eax
26 jmp FspSwitchStack
27 Pei2LoaderSwitchStack ENDP
28
29 ;------------------------------------------------------------------------------
30 ; UINT32
31 ; EFIAPI
32 ; Loader2PeiSwitchStack (
33 ; VOID
34 ; )
35 ;------------------------------------------------------------------------------
36 Loader2PeiSwitchStack PROC C PUBLIC
37 jmp FspSwitchStack
38 Loader2PeiSwitchStack ENDP
39
40 ;------------------------------------------------------------------------------
41 ; UINT32
42 ; EFIAPI
43 ; FspSwitchStack (
44 ; VOID
45 ; )
46 ;------------------------------------------------------------------------------
47 EXTERNDEF C SwapStack:PROC
48 FspSwitchStack PROC C PUBLIC
49 ; Save current contexts
50 push eax
51 pushfd
52 cli
53 pushad
54 sub esp, 8
55 sidt fword ptr [esp]
56
57 ; Load new stack
58 push esp
59 call SwapStack
60 mov esp, eax
61
62 ; Restore previous contexts
63 lidt fword ptr [esp]
64 add esp, 8
65 popad
66 popfd
67 add esp, 4
68 ret
69 FspSwitchStack ENDP
70
71 END