X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmcs.h;h=5d5035540383f2aa3ce7e81293de079f4042c036;hb=4d1d8fadad33de7d3ebce2083d9782048f78b44e;hp=f4620044a09c0550756362e2c6ecbb57f737b93b;hpb=9b4f278713b808ff34241b21630b1639e5ae0937;p=palacios.git diff --git a/palacios/include/palacios/vmcs.h b/palacios/include/palacios/vmcs.h index f462004..5d50355 100644 --- a/palacios/include/palacios/vmcs.h +++ b/palacios/include/palacios/vmcs.h @@ -36,6 +36,7 @@ /* Control register exit masks */ #define CR4_VMXE 0x00002000 +#define CR4_PAE 0x00000020 @@ -271,6 +272,42 @@ struct vmx_exception_bitmap { +struct vmx_intr_state { + union { + uint32_t value; + struct { + uint32_t block_sti : 1; + uint32_t block_mov_ss : 1; + uint32_t block_smi : 1; + uint32_t block_nmi : 1; + uint32_t rsvd : 28; + } __attribute__((packed)); + } __attribute__((packed)); +} __attribute__((packed)); + + +struct vmx_pending_dbg_excps { + union { + uint64_t value; + + struct { + uint32_t lo; + uint32_t hi; + } __attribute__((packed)); + + struct { + uint64_t b0 : 1; + uint64_t b1 : 1; + uint64_t b2 : 1; + uint64_t b3 : 1; + uint64_t rsvd1 : 8; + uint64_t bp_set : 1; + uint64_t rsvd2 : 1; + uint64_t bp_ss : 1; + uint64_t rsvd3 : 49; + } __attribute__((packed)); + } __attribute__((packed)); +} __attribute__((packed)); /* Segment Selector Access Rights (32 bits) */ /* INTEL Manual: 20-4 vol 3B */ @@ -298,6 +335,14 @@ struct vmcs_segment { }; +struct vmcs_msr_entry { + uint32_t index; + uint32_t rsvd; + uint32_t lo; + uint32_t hi; +} __attribute__((packed)); + + struct vmcs_interrupt_state { union { uint32_t val;