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 3cc1932..5834eb6 100644 (file)
 
 #define EFER_MSR                 0xc0000080
 
-// KCH: for system-call interposition
-#define STAR_MSR                 0xc0000081
-#define LSTAR_MSR                0xc0000082
-#define CSTAR_MSR                0xc0000083
-#define SF_MASK_MSR              0xc0000084
-#define FS_BASE_MSR              0xc0000100
-#define GS_BASE_MSR              0xc0000101
-#define KERN_GS_BASE_MSR         0xc0000102
-
 struct cr0_real {
     uint_t pe    : 1;
     uint_t mp    : 1;
@@ -128,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 {
@@ -143,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));
 
 
@@ -195,7 +194,6 @@ struct rflags {
 
 
 
-
 /*
 // First opcode byte
 static const uchar_t cr_access_byte = 0x0f;
@@ -220,17 +218,13 @@ 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_star_write(struct guest_info * core, uint_t msr, struct v3_msr src, void * priv_data);
-int v3_handle_star_read(struct guest_info * core, uint_t msr, struct v3_msr * dst, void * priv_data);
-int v3_handle_lstar_write(struct guest_info * core, uint_t msr, struct v3_msr src, void * priv_data);
-int v3_handle_lstar_read(struct guest_info * core, uint_t msr, struct v3_msr * dst, void * priv_data);
-int v3_handle_cstar_write(struct guest_info * core, uint_t msr, struct v3_msr src, void * priv_data);
-int v3_handle_cstar_read(struct guest_info * core, 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);