mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 13:44:33 +02:00
MdePkg: Clean up GHCB field offsets and save area
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3008 Use OFFSET_OF () and sizeof () to calculate the GHCB register field offsets instead of hardcoding the values in the GHCB_REGISTER enum. Define only fields that are used per the GHCB specification, which will result in removing some fields and adding others. Also, remove the DR7 field from the GHCB_SAVE_AREA structure since it is not used/defined in the GHCB specification and then rename the reserved fields as appropriate. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Message-Id: <5e9245c7600b9b2d55dd7586b8df28b91b75b72b.1604685192.git.thomas.lendacky@amd.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
parent
8c610e6075
commit
990ab937c2
@ -82,35 +82,10 @@
|
|||||||
#define IOIO_SEG_DS (BIT11 | BIT10)
|
#define IOIO_SEG_DS (BIT11 | BIT10)
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
GhcbCpl = 25,
|
|
||||||
GhcbRflags = 46,
|
|
||||||
GhcbRip,
|
|
||||||
GhcbRsp = 59,
|
|
||||||
GhcbRax = 63,
|
|
||||||
GhcbRcx = 97,
|
|
||||||
GhcbRdx,
|
|
||||||
GhcbRbx,
|
|
||||||
GhcbRbp = 101,
|
|
||||||
GhcbRsi,
|
|
||||||
GhcbRdi,
|
|
||||||
GhcbR8,
|
|
||||||
GhcbR9,
|
|
||||||
GhcbR10,
|
|
||||||
GhcbR11,
|
|
||||||
GhcbR12,
|
|
||||||
GhcbR13,
|
|
||||||
GhcbR14,
|
|
||||||
GhcbR15,
|
|
||||||
GhcbXCr0 = 125,
|
|
||||||
} GHCB_REGISTER;
|
|
||||||
|
|
||||||
typedef PACKED struct {
|
typedef PACKED struct {
|
||||||
UINT8 Reserved1[203];
|
UINT8 Reserved1[203];
|
||||||
UINT8 Cpl;
|
UINT8 Cpl;
|
||||||
UINT8 Reserved2[148];
|
UINT8 Reserved8[300];
|
||||||
UINT64 Dr7;
|
|
||||||
UINT8 Reserved3[144];
|
|
||||||
UINT64 Rax;
|
UINT64 Rax;
|
||||||
UINT8 Reserved4[264];
|
UINT8 Reserved4[264];
|
||||||
UINT64 Rcx;
|
UINT64 Rcx;
|
||||||
@ -136,6 +111,22 @@ typedef PACKED struct {
|
|||||||
UINT32 GhcbUsage;
|
UINT32 GhcbUsage;
|
||||||
} GHCB;
|
} GHCB;
|
||||||
|
|
||||||
|
#define GHCB_SAVE_AREA_QWORD_OFFSET(RegisterField) \
|
||||||
|
(OFFSET_OF (GHCB, SaveArea.RegisterField) / sizeof (UINT64))
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GhcbCpl = GHCB_SAVE_AREA_QWORD_OFFSET (Cpl),
|
||||||
|
GhcbRax = GHCB_SAVE_AREA_QWORD_OFFSET (Rax),
|
||||||
|
GhcbRbx = GHCB_SAVE_AREA_QWORD_OFFSET (Rbx),
|
||||||
|
GhcbRcx = GHCB_SAVE_AREA_QWORD_OFFSET (Rcx),
|
||||||
|
GhcbRdx = GHCB_SAVE_AREA_QWORD_OFFSET (Rdx),
|
||||||
|
GhcbXCr0 = GHCB_SAVE_AREA_QWORD_OFFSET (XCr0),
|
||||||
|
GhcbSwExitCode = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitCode),
|
||||||
|
GhcbSwExitInfo1 = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitInfo1),
|
||||||
|
GhcbSwExitInfo2 = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitInfo2),
|
||||||
|
GhcbSwScratch = GHCB_SAVE_AREA_QWORD_OFFSET (SwScratch),
|
||||||
|
} GHCB_REGISTER;
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
struct {
|
struct {
|
||||||
UINT32 Lower32Bits;
|
UINT32 Lower32Bits;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user