]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFsp2Pkg/Library/BaseFspSwitchStackLib/Ia32/Stack.nasm
IntelFsp2Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / IntelFsp2Pkg / Library / BaseFspSwitchStackLib / Ia32 / Stack.nasm
CommitLineData
4c42aaff
LG
1;------------------------------------------------------------------------------\r
2;\r
3; Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
9672cd30 4; SPDX-License-Identifier: BSD-2-Clause-Patent\r
4c42aaff
LG
5;\r
6; Abstract:\r
7;\r
8; Switch the stack from temporary memory to permenent memory.\r
9;\r
10;------------------------------------------------------------------------------\r
11\r
12 SECTION .text\r
13\r
14extern ASM_PFX(SwapStack)\r
15\r
16;------------------------------------------------------------------------------\r
17; UINT32\r
18; EFIAPI\r
19; Pei2LoaderSwitchStack (\r
20; VOID\r
21; )\r
22;------------------------------------------------------------------------------\r
23global ASM_PFX(Pei2LoaderSwitchStack)\r
24ASM_PFX(Pei2LoaderSwitchStack):\r
25 xor eax, eax\r
26 jmp ASM_PFX(FspSwitchStack)\r
27\r
28;------------------------------------------------------------------------------\r
29; UINT32\r
30; EFIAPI\r
31; Loader2PeiSwitchStack (\r
32; VOID\r
33; )\r
34;------------------------------------------------------------------------------\r
35global ASM_PFX(Loader2PeiSwitchStack)\r
36ASM_PFX(Loader2PeiSwitchStack):\r
37 jmp ASM_PFX(FspSwitchStack)\r
38\r
39;------------------------------------------------------------------------------\r
40; UINT32\r
41; EFIAPI\r
42; FspSwitchStack (\r
43; VOID\r
44; )\r
45;------------------------------------------------------------------------------\r
46global ASM_PFX(FspSwitchStack)\r
47ASM_PFX(FspSwitchStack):\r
48 ; Save current contexts\r
49 push eax\r
50 pushfd\r
51 cli\r
52 pushad\r
53 sub esp, 8\r
54 sidt [esp]\r
55\r
56 ; Load new stack\r
57 push esp\r
58 call ASM_PFX(SwapStack)\r
59 mov esp, eax\r
60\r
61 ; Restore previous contexts\r
62 lidt [esp]\r
63 add esp, 8\r
64 popad\r
65 popfd\r
66 add esp, 4\r
67 ret\r
68\r