]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/ResetVector/ResetVector.nasmb
OvmfPkg/ResetVector: update SEV support to use new work area format
[mirror_edk2.git] / OvmfPkg / ResetVector / ResetVector.nasmb
CommitLineData
9b9fdbfa
JJ
1;------------------------------------------------------------------------------\r
2; @file\r
3; This file includes all other code files to assemble the reset vector code\r
4;\r
5; Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>\r
7cb96c47 6; Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved.<BR>\r
b26f0cf9 7; SPDX-License-Identifier: BSD-2-Clause-Patent\r
9b9fdbfa
JJ
8;\r
9;------------------------------------------------------------------------------\r
10\r
11;\r
12; If neither ARCH_IA32 nor ARCH_X64 are defined, then try to include\r
13; Base.h to use the C pre-processor to determine the architecture.\r
14;\r
15%ifndef ARCH_IA32\r
16 %ifndef ARCH_X64\r
17 #include <Base.h>\r
18 #if defined (MDE_CPU_IA32)\r
19 %define ARCH_IA32\r
20 #elif defined (MDE_CPU_X64)\r
21 %define ARCH_X64\r
22 #endif\r
23 %endif\r
24%endif\r
25\r
26%ifdef ARCH_IA32\r
27 %ifdef ARCH_X64\r
28 %error "Only one of ARCH_IA32 or ARCH_X64 can be defined."\r
29 %endif\r
30%elifdef ARCH_X64\r
31%else\r
32 %error "Either ARCH_IA32 or ARCH_X64 must be defined."\r
33%endif\r
34\r
35%include "CommonMacros.inc"\r
36\r
37%include "PostCodes.inc"\r
38\r
39%ifdef DEBUG_PORT80\r
40 %include "Port80Debug.asm"\r
41%elifdef DEBUG_SERIAL\r
42 %include "SerialDebug.asm"\r
43%else\r
44 %include "DebugDisabled.asm"\r
45%endif\r
46\r
47%include "Ia32/SearchForBfvBase.asm"\r
48%include "Ia32/SearchForSecEntry.asm"\r
49\r
50%ifdef ARCH_X64\r
73d66c58
MH
51 #include <AutoGen.h>\r
52\r
53 %if (FixedPcdGet32 (PcdOvmfSecPageTablesSize) != 0x6000)\r
54 %error "This implementation inherently depends on PcdOvmfSecPageTablesSize"\r
55 %endif\r
56\r
6995a1b7
TL
57 %if (FixedPcdGet32 (PcdOvmfSecGhcbPageTableSize) != 0x1000)\r
58 %error "This implementation inherently depends on PcdOvmfSecGhcbPageTableSize"\r
59 %endif\r
60\r
61 %if (FixedPcdGet32 (PcdOvmfSecGhcbSize) != 0x2000)\r
62 %error "This implementation inherently depends on PcdOvmfSecGhcbSize"\r
63 %endif\r
64\r
65 %if ((FixedPcdGet32 (PcdOvmfSecGhcbBase) >> 21) != \\r
66 ((FixedPcdGet32 (PcdOvmfSecGhcbBase) + FixedPcdGet32 (PcdOvmfSecGhcbSize) - 1) >> 21))\r
67 %error "This implementation inherently depends on PcdOvmfSecGhcbBase not straddling a 2MB boundary"\r
68 %endif\r
69\r
73d66c58 70 %define PT_ADDR(Offset) (FixedPcdGet32 (PcdOvmfSecPageTablesBase) + (Offset))\r
6995a1b7
TL
71\r
72 %define GHCB_PT_ADDR (FixedPcdGet32 (PcdOvmfSecGhcbPageTableBase))\r
73 %define GHCB_BASE (FixedPcdGet32 (PcdOvmfSecGhcbBase))\r
74 %define GHCB_SIZE (FixedPcdGet32 (PcdOvmfSecGhcbSize))\r
ab77b603 75 %define WORK_AREA_GUEST_TYPE (FixedPcdGet32 (PcdOvmfWorkAreaBase))\r
8a273218 76 %define SEV_ES_WORK_AREA (FixedPcdGet32 (PcdSevEsWorkAreaBase))\r
7cb96c47 77 %define SEV_ES_WORK_AREA_RDRAND (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 8)\r
3b32be7e 78 %define SEV_ES_WORK_AREA_ENC_MASK (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 16)\r
8a273218 79 %define SEV_ES_VC_TOP_OF_STACK (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + FixedPcdGet32 (PcdOvmfSecPeiTempRamSize))\r
7cb96c47 80%include "Ia32/Flat32ToFlat64.asm"\r
b461d676 81%include "Ia32/AmdSev.asm"\r
9b9fdbfa
JJ
82%include "Ia32/PageTables64.asm"\r
83%endif\r
84\r
85%include "Ia16/Real16ToFlat32.asm"\r
86%include "Ia16/Init16.asm"\r
87\r
88%include "Main.asm"\r
89\r
30937f2f 90 %define SEV_ES_AP_RESET_IP FixedPcdGet32 (PcdSevEsWorkAreaBase)\r
224752ec
JB
91 %define SEV_LAUNCH_SECRET_BASE FixedPcdGet32 (PcdSevLaunchSecretBase)\r
92 %define SEV_LAUNCH_SECRET_SIZE FixedPcdGet32 (PcdSevLaunchSecretSize)\r
0deeab36
JB
93 %define SEV_FW_HASH_BLOCK_BASE FixedPcdGet32 (PcdQemuHashTableBase)\r
94 %define SEV_FW_HASH_BLOCK_SIZE FixedPcdGet32 (PcdQemuHashTableSize)\r
9b9fdbfa
JJ
95%include "Ia16/ResetVectorVtf0.asm"\r
96\r