Skip to content

Commit

Permalink
cpuarch/vmsa: add missing VMSA fields
Browse files Browse the repository at this point in the history
Add missing VMSA fields as of the latest revision in the AMD manual.
While we are at it, verify at compile-time that the VMSA size is
exactly that of one page.

Signed-off-by: Carlos López <[email protected]>
  • Loading branch information
00xc committed Jul 16, 2024
1 parent 4eb69fc commit 1859675
Showing 1 changed file with 28 additions and 2 deletions.
30 changes: 28 additions & 2 deletions cpuarch/src/vmsa.rs
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,23 @@ pub struct VMSA {
pub fpreg_x87: [u8; 80],
pub fpreg_xmm: [u8; 256],
pub fpreg_ymm: [u8; 256],
pub reserved_670: [u8; 2448],
pub lbr_stack: [u8; 256],
pub lbr_select: u64,
pub ibs_fetch_ctl: u64,
pub ibs_fetch_linaddr: u64,
pub ibs_op_ctl: u64,
pub ibs_op_rip: u64,
pub ibs_op_data: u64,
pub ibs_op_data2: u64,
pub ibs_op_data3: u64,
pub ibs_dc_linaddr: u64,
pub bp_ibstgt_rip: u64,
pub ic_ibs_extd_ctl: u64,
pub reserved_7c8: [u8; 2104],
}

const _: () = assert!(core::mem::size_of::<VMSA>() == 0x1000);

impl Default for VMSA {
fn default() -> Self {
VMSA {
Expand Down Expand Up @@ -335,7 +349,19 @@ impl Default for VMSA {
fpreg_x87: [0u8; 80],
fpreg_xmm: [0u8; 256],
fpreg_ymm: [0u8; 256],
reserved_670: [0u8; 2448],
lbr_stack: [0; 256],
lbr_select: Default::default(),
ibs_fetch_ctl: Default::default(),
ibs_fetch_linaddr: Default::default(),
ibs_op_ctl: Default::default(),
ibs_op_rip: Default::default(),
ibs_op_data: Default::default(),
ibs_op_data2: Default::default(),
ibs_op_data3: Default::default(),
ibs_dc_linaddr: Default::default(),
bp_ibstgt_rip: Default::default(),
ic_ibs_extd_ctl: Default::default(),
reserved_7c8: [0u8; 2104],
}
}
}

0 comments on commit 1859675

Please sign in to comment.