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.


Do we need to save and restore the guests GS/FS regs?
[palacios.git] / palacios / include / palacios / vm_guest.h
index eb67f2b..1eb4de6 100644 (file)
@@ -29,9 +29,9 @@
 #include <palacios/vmm_intr.h>
 #include <palacios/vmm_dev_mgr.h>
 #include <palacios/vmm_time.h>
-#include <palacios/vmm_emulator.h>
 #include <palacios/vmm_host_events.h>
 #include <palacios/vmm_msr.h>
+#include <palacios/vmm_profiler.h>
 
 
 
@@ -44,7 +44,17 @@ struct v3_gprs {
   v3_reg_t rdx;
   v3_reg_t rcx;
   v3_reg_t rax;
-};
+
+  v3_reg_t r8;
+  v3_reg_t r9;
+  v3_reg_t r10;
+  v3_reg_t r11;
+  v3_reg_t r12;
+  v3_reg_t r13;
+  v3_reg_t r14;
+  v3_reg_t r15;
+  
+} __attribute__((packed));
 
 
 struct v3_ctrl_regs {
@@ -80,7 +90,7 @@ struct v3_segment {
   uint_t long_mode      : 1;
   uint_t db             : 1;
   uint_t granularity    : 1;
-};
+} __attribute__((packed));
 
 
 struct v3_segments {
@@ -97,11 +107,8 @@ struct v3_segments {
 };
 
 struct shadow_page_state;
-struct shadow_map;
-struct vmm_io_map;
-struct emulation_state;
 struct v3_intr_state;
-
+struct v3_profiler;
 
 
 
@@ -112,7 +119,8 @@ struct guest_info {
   uint_t cpl;
 
   addr_t mem_size; // Probably in bytes for now....
-  struct shadow_map mem_map;
+  v3_shdw_map_t mem_map;
+
 
   struct vm_time time_state;
 
@@ -126,11 +134,11 @@ struct guest_info {
   // This structure is how we get interrupts for the guest
   struct v3_intr_state intr_state;
 
-  struct vmm_io_map io_map;
+  v3_io_map_t io_map;
 
   struct v3_msr_map msr_map;
-  // device_map
 
+  // device_map
   struct vmm_dev_mgr  dev_mgr;
 
   struct v3_host_events host_event_hooks;
@@ -148,12 +156,25 @@ struct guest_info {
   void * vmm_data;
 
 
+  uint_t enable_profiler;
+  struct v3_profiler profiler;
+
   void * decoder_state;
 
-  struct v3_msr guest_efer;
+  v3_msr_t guest_efer;
+
+  /* Do we need these ? */
+  v3_msr_t guest_star;
+  v3_msr_t guest_lstar;
+  v3_msr_t guest_cstar;
+  v3_msr_t guest_syscall_mask;
+  v3_msr_t guest_gs_base;
+
+
+  uint64_t fs;
+  uint64_t gs;
+
 
-  /* TEMP */
-  //ullong_t exit_tsc;
 
 };