]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/Sec/Ia32/TempRam.c
EmulatorPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / EmulatorPkg / Sec / Ia32 / TempRam.c
CommitLineData
afa99fac
GL
1/*++ @file\r
2 Temp RAM PPI\r
3\r
4Copyright (c) 2011, Apple Inc. All rights reserved.<BR>\r
e3ba31da 5SPDX-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
15VOID\r
16EFIAPI\r
17SecSwitchStack (\r
18 UINT32 TemporaryMemoryBase,\r
19 UINT32 PermenentMemoryBase\r
20 );\r
21\r
22\r
23EFI_STATUS\r
24EFIAPI\r
25SecTemporaryRamSupport (\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