2 * This file is part of the Palacios Virtual Machine Monitor developed
3 * by the V3VEE Project with funding from the United States National
4 * Science Foundation and the Department of Energy.
6 * The V3VEE Project is a joint project between Northwestern University
7 * and the University of New Mexico. You can find out more at
10 * Copyright (c) 2011, Jack Lange <jacklange@cs.pitt.edu>
11 * All rights reserved.
13 * Author: Jack Lange <jacklange@cs.pitt.edu>
15 * This is free software. You are permitted to use,
16 * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
26 /* The actual format of these data structures is specified as being machine
27 dependent. Thus the lengths of the base address fields are defined as variable.
28 To be safe we assume the maximum(?) size fields
32 typedef struct vmx_eptp {
36 uint64_t pml_base_addr : 39;
38 } __attribute__((packed)) vmx_eptp_t;
41 typedef struct vmx_pml4 {
47 uint64_t pdp_base_addr : 39;
49 uint32_t ignore2 : 12;
50 } __attribute__((packed)) vmx_pml4_t;
53 typedef struct vmx_pdp_1GB {
59 uint8_t large_page : 1;
62 uint32_t page_base_addr : 21;
64 uint32_t ignore2 : 12;
65 } __attribute__((packed)) vmx_pdp_1GB_t;
67 typedef struct vmx_pdp {
72 uint8_t large_page : 1;
74 uint32_t page_base_addr : 39;
76 uint32_t ignore2 : 12;
77 } __attribute__((packed)) vmx_pdp_t;
80 typedef struct vmx_pde_2MB {
86 uint8_t large_page : 1;
89 uint32_t page_base_addr : 30;
91 uint32_t ignore2 : 12;
92 } __attribute__((packed)) vmx_pde_2MB_t;
95 typedef struct vmx_pde {
100 uint8_t large_page : 1;
102 uint32_t page_base_addr : 39;
104 uint32_t ignore2 : 12;
105 } __attribute__((packed)) vmx_pde_t;
109 typedef struct vmx_pte {
116 uint32_t page_base_addr : 39;
118 uint32_t ignore2 : 12;
119 } __attribute__((packed)) vmx_pte_t;