]>
Commit | Line | Data |
---|---|---|
afa99fac GL |
1 | /*++ @file\r |
2 | Temp RAM PPI\r | |
3 | \r | |
4 | Copyright (c) 2011, Apple Inc. All rights reserved.<BR>\r | |
e3ba31da | 5 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
afa99fac GL |
6 | \r |
7 | **/\r | |
8 | \r | |
9 | #include <PiPei.h>\r | |
10 | #include <Library/DebugLib.h>\r | |
11 | #include <Library/BaseMemoryLib.h>\r | |
12 | \r | |
13 | #include <Ppi/TemporaryRamSupport.h>\r | |
14 | \r | |
15 | VOID\r | |
16 | EFIAPI\r | |
17 | SecSwitchStack (\r | |
18 | UINT32 TemporaryMemoryBase,\r | |
19 | UINT32 PermenentMemoryBase\r | |
20 | );\r | |
21 | \r | |
22 | \r | |
23 | EFI_STATUS\r | |
24 | EFIAPI\r | |
25 | SecTemporaryRamSupport (\r | |
26 | IN CONST EFI_PEI_SERVICES **PeiServices,\r | |
27 | IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,\r | |
28 | IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,\r | |
29 | IN UINTN CopySize\r | |
30 | )\r | |
31 | {\r | |
32 | //\r | |
33 | // Migrate the whole temporary memory to permanent memory.\r | |
34 | //\r | |
35 | CopyMem (\r | |
36 | (VOID*)(UINTN)PermanentMemoryBase,\r | |
37 | (VOID*)(UINTN)TemporaryMemoryBase,\r | |
38 | CopySize\r | |
39 | );\r | |
40 | \r | |
41 | //\r | |
42 | // SecSwitchStack function must be invoked after the memory migration\r | |
43 | // immediately, also we need fixup the stack change caused by new call into\r | |
44 | // permanent memory.\r | |
45 | //\r | |
46 | SecSwitchStack ((UINT32) TemporaryMemoryBase, (UINT32) PermanentMemoryBase);\r | |
47 | \r | |
48 | //\r | |
49 | // We need *not* fix the return address because currently,\r | |
50 | // The PeiCore is executed in flash.\r | |
51 | //\r | |
52 | \r | |
53 | //\r | |
54 | // Simulate to invalid temporary memory, terminate temporary memory\r | |
55 | //\r | |
56 | //ZeroMem ((VOID*)(UINTN)TemporaryMemoryBase, CopySize);\r | |
57 | \r | |
58 | return EFI_SUCCESS;\r | |
59 | }\r |