]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFspPkg/Library/BaseFspSwitchStackLib/Ia32/Stack.s
DynamicTablesPkg: GTDT updates for ACPI 6.3
[mirror_edk2.git] / IntelFspPkg / Library / BaseFspSwitchStackLib / Ia32 / Stack.s
CommitLineData
c8ec22a2
JY
1#------------------------------------------------------------------------------\r
2#\r
d5fb1edf 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
c8ec22a2
JY
12\r
13#------------------------------------------------------------------------------\r
14# UINT32\r
15# EFIAPI\r
16# Pei2LoaderSwitchStack (\r
17# VOID\r
18# )\r
19#------------------------------------------------------------------------------\r
20ASM_GLOBAL ASM_PFX(Pei2LoaderSwitchStack)\r
21ASM_PFX(Pei2LoaderSwitchStack):\r
3b17b245
MM
22 xorl %eax, %eax\r
23 jmp ASM_PFX(FspSwitchStack)\r
c8ec22a2
JY
24\r
25#------------------------------------------------------------------------------\r
26# UINT32\r
27# EFIAPI\r
28# Loader2PeiSwitchStack (\r
3b17b245 29# VOID\r
c8ec22a2
JY
30# )\r
31#------------------------------------------------------------------------------\r
32ASM_GLOBAL ASM_PFX(Loader2PeiSwitchStack)\r
33ASM_PFX(Loader2PeiSwitchStack):\r
3b17b245
MM
34 jmp ASM_PFX(FspSwitchStack)\r
35\r
36#------------------------------------------------------------------------------\r
37# UINT32\r
38# EFIAPI\r
39# FspSwitchStack (\r
40# VOID\r
41# )\r
42#------------------------------------------------------------------------------\r
43ASM_GLOBAL ASM_PFX(FspSwitchStack)\r
44ASM_PFX(FspSwitchStack):\r
d5fb1edf
JY
45 #\r
46 #Save current contexts\r
47 #\r
3b17b245 48 push %eax\r
c8ec22a2 49 pushf\r
c8ec22a2
JY
50 cli\r
51 pusha\r
d5fb1edf 52 sub $0x08, %esp\r
c8ec22a2
JY
53 sidt (%esp)\r
54\r
d5fb1edf 55 #\r
c8ec22a2 56 # Load new stack\r
d5fb1edf 57 #\r
c8ec22a2
JY
58 push %esp\r
59 call ASM_PFX(SwapStack)\r
d5fb1edf 60 movl %eax, %esp\r
c8ec22a2 61\r
d5fb1edf 62 #\r
c8ec22a2 63 # Restore previous contexts\r
d5fb1edf 64 #\r
c8ec22a2 65 lidt (%esp)\r
d5fb1edf 66 add $0x08,%esp\r
c8ec22a2
JY
67 popa\r
68 popf\r
3b17b245 69 add $0x04,%esp\r
c8ec22a2
JY
70 ret\r
71\r
72\r