]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Register/Amd/Ghcb.h
MdePkg: Clean up GHCB field offsets and save area
[mirror_edk2.git] / MdePkg / Include / Register / Amd / Ghcb.h
index 54a80da0f6d7ca38317886480805e9bd0f37c579..ccdb662af7a7e7ae469863edfba8f1ebc70a3a54 100644 (file)
 #define IOIO_SEG_DS         (BIT11 | BIT10)\r
 \r
 \r
-typedef enum {\r
-  GhcbCpl              = 25,\r
-  GhcbRflags           = 46,\r
-  GhcbRip,\r
-  GhcbRsp              = 59,\r
-  GhcbRax              = 63,\r
-  GhcbRcx              = 97,\r
-  GhcbRdx,\r
-  GhcbRbx,\r
-  GhcbRbp              = 101,\r
-  GhcbRsi,\r
-  GhcbRdi,\r
-  GhcbR8,\r
-  GhcbR9,\r
-  GhcbR10,\r
-  GhcbR11,\r
-  GhcbR12,\r
-  GhcbR13,\r
-  GhcbR14,\r
-  GhcbR15,\r
-  GhcbXCr0             = 125,\r
-} GHCB_REGISTER;\r
-\r
 typedef PACKED struct {\r
   UINT8                  Reserved1[203];\r
   UINT8                  Cpl;\r
-  UINT8                  Reserved2[148];\r
-  UINT64                 Dr7;\r
-  UINT8                  Reserved3[144];\r
+  UINT8                  Reserved8[300];\r
   UINT64                 Rax;\r
   UINT8                  Reserved4[264];\r
   UINT64                 Rcx;\r
@@ -136,6 +111,22 @@ typedef PACKED struct {
   UINT32                 GhcbUsage;\r
 } GHCB;\r
 \r
+#define GHCB_SAVE_AREA_QWORD_OFFSET(RegisterField) \\r
+  (OFFSET_OF (GHCB, SaveArea.RegisterField) / sizeof (UINT64))\r
+\r
+typedef enum {\r
+  GhcbCpl          = GHCB_SAVE_AREA_QWORD_OFFSET (Cpl),\r
+  GhcbRax          = GHCB_SAVE_AREA_QWORD_OFFSET (Rax),\r
+  GhcbRbx          = GHCB_SAVE_AREA_QWORD_OFFSET (Rbx),\r
+  GhcbRcx          = GHCB_SAVE_AREA_QWORD_OFFSET (Rcx),\r
+  GhcbRdx          = GHCB_SAVE_AREA_QWORD_OFFSET (Rdx),\r
+  GhcbXCr0         = GHCB_SAVE_AREA_QWORD_OFFSET (XCr0),\r
+  GhcbSwExitCode   = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitCode),\r
+  GhcbSwExitInfo1  = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitInfo1),\r
+  GhcbSwExitInfo2  = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitInfo2),\r
+  GhcbSwScratch    = GHCB_SAVE_AREA_QWORD_OFFSET (SwScratch),\r
+} GHCB_REGISTER;\r
+\r
 typedef union {\r
   struct {\r
     UINT32  Lower32Bits;\r