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 74e986e..1eb4de6 100644 (file)
@@ -29,7 +29,6 @@
 #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>
@@ -45,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 {
@@ -95,10 +104,9 @@ struct v3_segments {
   struct v3_segment gdtr;
   struct v3_segment idtr;
   struct v3_segment tr;
-} ;
+};
 
 struct shadow_page_state;
-struct emulation_state;
 struct v3_intr_state;
 struct v3_profiler;
 
@@ -129,8 +137,8 @@ struct guest_info {
   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;
@@ -153,10 +161,20 @@ struct guest_info {
 
   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;
 
 };