]>
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 | |
a550d468 MK |
18 | UINT32 TemporaryMemoryBase,\r |
19 | UINT32 PermenentMemoryBase\r | |
afa99fac GL |
20 | );\r |
21 | \r | |
afa99fac GL |
22 | EFI_STATUS\r |
23 | EFIAPI\r | |
24 | SecTemporaryRamSupport (\r | |
a550d468 MK |
25 | IN CONST EFI_PEI_SERVICES **PeiServices,\r |
26 | IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,\r | |
27 | IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,\r | |
28 | IN UINTN CopySize\r | |
afa99fac GL |
29 | )\r |
30 | {\r | |
31 | //\r | |
32 | // Migrate the whole temporary memory to permanent memory.\r | |
33 | //\r | |
34 | CopyMem (\r | |
a550d468 MK |
35 | (VOID *)(UINTN)PermanentMemoryBase,\r |
36 | (VOID *)(UINTN)TemporaryMemoryBase,\r | |
afa99fac GL |
37 | CopySize\r |
38 | );\r | |
39 | \r | |
40 | //\r | |
41 | // SecSwitchStack function must be invoked after the memory migration\r | |
42 | // immediately, also we need fixup the stack change caused by new call into\r | |
43 | // permanent memory.\r | |
44 | //\r | |
a550d468 | 45 | SecSwitchStack ((UINT32)TemporaryMemoryBase, (UINT32)PermanentMemoryBase);\r |
afa99fac GL |
46 | \r |
47 | //\r | |
48 | // We need *not* fix the return address because currently,\r | |
49 | // The PeiCore is executed in flash.\r | |
50 | //\r | |
51 | \r | |
52 | //\r | |
53 | // Simulate to invalid temporary memory, terminate temporary memory\r | |
54 | //\r | |
a550d468 | 55 | // ZeroMem ((VOID*)(UINTN)TemporaryMemoryBase, CopySize);\r |
afa99fac GL |
56 | \r |
57 | return EFI_SUCCESS;\r | |
58 | }\r |