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