]>
Commit | Line | Data |
---|---|---|
c8ec22a2 JY |
1 | ;------------------------------------------------------------------------------\r |
2 | ;\r | |
3b17b245 | 3 | ; Copyright (c) 2014 - 2015, Intel Corporation. All rights reserved.<BR>\r |
c8ec22a2 JY |
4 | ; This program and the accompanying materials\r |
5 | ; are licensed and made available under the terms and conditions of the BSD License\r | |
6 | ; which accompanies this distribution. The full text of the license may be found at\r | |
7 | ; http://opensource.org/licenses/bsd-license.php.\r | |
8 | ;\r | |
9 | ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
10 | ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
11 | ;\r | |
12 | ; Abstract:\r | |
13 | ;\r | |
14 | ; Switch the stack from temporary memory to permenent memory.\r | |
15 | ;\r | |
16 | ;------------------------------------------------------------------------------\r | |
17 | \r | |
18 | .586p\r | |
19 | .model flat,C\r | |
20 | .code\r | |
21 | \r | |
22 | ;------------------------------------------------------------------------------\r | |
23 | ; UINT32\r | |
24 | ; EFIAPI\r | |
25 | ; Pei2LoaderSwitchStack (\r | |
26 | ; VOID\r | |
27 | ; )\r | |
28 | ;------------------------------------------------------------------------------\r | |
29 | EXTERNDEF C MeasurePoint:PROC\r | |
30 | Pei2LoaderSwitchStack PROC C PUBLIC\r | |
3b17b245 MM |
31 | xor eax, eax\r |
32 | jmp FspSwitchStack\r | |
c8ec22a2 JY |
33 | Pei2LoaderSwitchStack ENDP\r |
34 | \r | |
35 | ;------------------------------------------------------------------------------\r | |
36 | ; UINT32\r | |
37 | ; EFIAPI\r | |
38 | ; Loader2PeiSwitchStack (\r | |
39 | ; VOID\r | |
40 | ; )\r | |
41 | ;------------------------------------------------------------------------------\r | |
c8ec22a2 | 42 | Loader2PeiSwitchStack PROC C PUBLIC\r |
3b17b245 MM |
43 | jmp FspSwitchStack\r |
44 | Loader2PeiSwitchStack ENDP\r | |
45 | \r | |
46 | ;------------------------------------------------------------------------------\r | |
47 | ; UINT32\r | |
48 | ; EFIAPI\r | |
49 | ; FspSwitchStack (\r | |
50 | ; VOID\r | |
51 | ; )\r | |
52 | ;------------------------------------------------------------------------------\r | |
53 | EXTERNDEF C SwapStack:PROC\r | |
54 | FspSwitchStack PROC C PUBLIC\r | |
c8ec22a2 | 55 | ; Save current contexts\r |
3b17b245 | 56 | push eax\r |
c8ec22a2 JY |
57 | pushfd\r |
58 | cli\r | |
59 | pushad\r | |
60 | sub esp, 8\r | |
61 | sidt fword ptr [esp]\r | |
62 | \r | |
63 | ; Load new stack\r | |
64 | push esp\r | |
65 | call SwapStack\r | |
66 | mov esp, eax\r | |
67 | \r | |
68 | ; Restore previous contexts\r | |
69 | lidt fword ptr [esp]\r | |
70 | add esp, 8\r | |
71 | popad\r | |
72 | popfd\r | |
3b17b245 | 73 | add esp, 4\r |
c8ec22a2 | 74 | ret\r |
3b17b245 | 75 | FspSwitchStack ENDP\r |
c8ec22a2 JY |
76 | \r |
77 | END\r |