X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmx.h;h=278622fdf06a12e415c765a436bb01d4ee61c84b;hb=24178516ccd9f46718b687d4c630415eb63ff595;hp=e0691b76a2ee001bd5f0081bcc5f2c1463773751;hpb=f9bb3db89469169bb5775dc031d89e570c6fed70;p=palacios.git diff --git a/palacios/include/palacios/vmx.h b/palacios/include/palacios/vmx.h index e0691b7..278622f 100644 --- a/palacios/include/palacios/vmx.h +++ b/palacios/include/palacios/vmx.h @@ -1,9 +1,31 @@ -/* Northwestern University */ -/* (c) 2008, Jack Lange */ + +/* + * This file is part of the Palacios Virtual Machine Monitor developed + * by the V3VEE Project with funding from the United States National + * Science Foundation and the Department of Energy. + * + * The V3VEE Project is a joint project between Northwestern University + * and the University of New Mexico. You can find out more at + * http://www.v3vee.org + * + * Copyright (c) 2008, Peter Dinda + * Copyright (c) 2008, Jack Lange + * Copyright (c) 2008, The V3VEE Project + * All rights reserved. + * + * Author: Peter Dinda + * Author: Jack Lange + * + * This is free software. You are permitted to use, + * redistribute, and modify it as specified in the file "V3VEE_LICENSE". + */ + #ifndef __VMX_H #define __VMX_H +#ifdef __V3VEE__ + #include #include @@ -38,39 +60,34 @@ typedef void VmxOnRegion; -#if __TINYC__ -#define PACKED -#else -#define PACKED __attribute__((packed)) -#endif struct MSR_REGS { - uint_t low PACKED; - uint_t high PACKED; -}; + uint_t low; + uint_t high; +} __attribute__((packed)); struct VMX_BASIC { - uint_t revision PACKED ; - uint_t regionSize : 13 PACKED ; - uint_t rsvd1 : 4 PACKED ; // Always 0 - uint_t physWidth : 1 PACKED ; - uint_t smm : 1 PACKED ; // Always 1 - uint_t memType : 4 PACKED ; - uint_t rsvd2 : 10 PACKED ; // Always 0 -}; + uint_t revision; + uint_t regionSize : 13; + uint_t rsvd1 : 4; // Always 0 + uint_t physWidth : 1; + uint_t smm : 1; // Always 1 + uint_t memType : 4; + uint_t rsvd2 : 10; // Always 0 +} __attribute__((packed)); union VMX_MSR { - struct MSR_REGS regs PACKED; - struct VMX_BASIC vmxBasic PACKED; -}; + struct MSR_REGS regs; + struct VMX_BASIC vmxBasic; +} __attribute__((packed)); struct VMDescriptor { uint_t entry_ip; uint_t exit_eip; uint_t guest_esp; -} ; +} __attribute__((packed)); enum VMState { VM_VMXASSIST_STARTUP, VM_VMXASSIST_V8086_BIOS, VM_VMXASSIST_V8086, VM_NORMAL }; @@ -111,6 +128,6 @@ int VMLaunch(struct VMDescriptor *vm); int Do_VMM(struct VMXRegs regs); - +#endif // ! __V3VEE__ #endif