Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


update outdated CR4 definitions
[palacios.git] / palacios / include / palacios / vmm_ctrl_regs.h
index f23caad..5834eb6 100644 (file)
@@ -119,9 +119,13 @@ struct cr4_32 {
     uint_t mce               : 1;
     uint_t pge               : 1;
     uint_t pce               : 1;
-    uint_t osf_xsr           : 1;
-    uint_t osx               : 1;
-    uint_t rsvd1             : 21;
+    uint_t os_fxsr           : 1;
+    uint_t osxmmexcpt        : 1;
+    uint_t rsvd0             : 5;
+    uint_t fsgsbase          : 1;
+    uint_t rsvd1             : 1;
+    uint_t osxsave           : 1;
+    uint_t rsvd2             : 13;
 } __attribute__((packed));
 
 struct cr4_64 {
@@ -134,10 +138,14 @@ struct cr4_64 {
     uint_t mce               : 1;
     uint_t pge               : 1;
     uint_t pce               : 1;
-    uint_t osf_xsr           : 1;
-    uint_t osx               : 1;
-    uint_t rsvd1             : 21;
-    uint_t rsvd2             : 32;
+    uint_t os_fxsr           : 1;
+    uint_t osxmmexcpt        : 1;
+    uint_t rsvd0             : 5;
+    uint_t fsgsbase          : 1;
+    uint_t rsvd1             : 1;
+    uint_t osxsave           : 1;
+    uint_t rsvd2             : 13;
+    uint_t rsvd3             : 32;
 } __attribute__((packed));
 
 
@@ -186,7 +194,6 @@ struct rflags {
 
 
 
-
 /*
 // First opcode byte
 static const uchar_t cr_access_byte = 0x0f;
@@ -211,9 +218,15 @@ int v3_handle_cr3_read(struct guest_info * info);
 int v3_handle_cr4_write(struct guest_info * info);
 int v3_handle_cr4_read(struct guest_info * info);
 
+int v3_handle_cr8_write(struct guest_info * info);
+int v3_handle_cr8_read(struct guest_info * info);
+
+
+int v3_handle_efer_write(struct guest_info * core, uint_t msr, struct v3_msr src, void * priv_data);
+int v3_handle_efer_read(struct guest_info * core, uint_t msr, struct v3_msr * dst, void * priv_data);
 
-int v3_handle_efer_write(uint_t msr, struct v3_msr src, void * priv_data);
-int v3_handle_efer_read(uint_t msr, struct v3_msr * dst, void * priv_data);
+int v3_handle_vm_cr_write(struct guest_info * core, uint_t msr, struct v3_msr src, void * priv_data);
+int v3_handle_vm_cr_read(struct guest_info * core, uint_t msr, struct v3_msr * dst, void * priv_data);
 
 
 #endif // ! __V3VEE__