X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmcs.h;h=c80a23cfe25eb92de5c81ec966418ad534332a01;hb=fdb16aa5e99a19a91264ae84beaf77d3036548d5;hp=2a7e42e85dcac5d80887318d7de08172310c81b5;hpb=5bf6d0c260240e314876a2fca8e3fd56bd6a1029;p=palacios.git diff --git a/palacios/include/palacios/vmcs.h b/palacios/include/palacios/vmcs.h index 2a7e42e..c80a23c 100644 --- a/palacios/include/palacios/vmcs.h +++ b/palacios/include/palacios/vmcs.h @@ -39,6 +39,15 @@ +struct vmcs_field_encoding { + uint8_t access_type : 1; /* 0 = full, 1 = high, (for accessing 64 bit fields on 32bit CPU) */ + uint16_t index : 9; + uint8_t type : 2; /* 0=ctrl, 1=read-only, 2 = guest state, 3 = host state */ + uint8_t rsvd1 : 1; /* MBZ */ + uint8_t width : 2; /* 0 = 16bit, 1 = 64bit, 2 = 32bit, 3 = natural width */ + uint32_t rsvd2 : 17; +} __attribute__((packed)); + typedef enum { VMCS_GUEST_ES_SELECTOR = 0x00000800, @@ -83,7 +92,7 @@ typedef enum { VMCS_LINK_PTR_HIGH = 0x00002801, VMCS_GUEST_DBG_CTL = 0x00002802, VMCS_GUEST_DBG_CTL_HIGH = 0x00002803, - VMCS_GUEST_EFER = 0x00002805, + VMCS_GUEST_EFER = 0x00002806, VMCS_GUEST_EFER_HIGH = 0x00002807, VMCS_GUEST_PERF_GLOBAL_CTRL = 0x00002808, VMCS_GUEST_PERF_GLOBAL_CTRL_HIGH = 0x00002809, @@ -265,15 +274,21 @@ struct vmcs_segment { struct vmcs_interrupt_state { - uint32_t sti_blocking : 1; - uint32_t mov_ss_blocking : 1; - uint32_t smi_blocking : 1; - uint32_t nmi_blocking : 1; - uint32_t rsvd1 : 28; + union { + uint32_t val; + struct { + uint32_t sti_blocking : 1; + uint32_t mov_ss_blocking : 1; + uint32_t smi_blocking : 1; + uint32_t nmi_blocking : 1; + uint32_t rsvd1 : 28; + } __attribute__((packed)); + } __attribute__((packed)); } __attribute__((packed)); + struct vmcs_data { uint32_t revision ; uint32_t abort ;