]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/Sec/Ia32/TempRam.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[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
a550d468
MK
18 UINT32 TemporaryMemoryBase,\r
19 UINT32 PermenentMemoryBase\r
afa99fac
GL
20 );\r
21\r
afa99fac
GL
22EFI_STATUS\r
23EFIAPI\r
24SecTemporaryRamSupport (\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