X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_ctrl_regs.c;fp=palacios%2Fsrc%2Fpalacios%2Fvmm_ctrl_regs.c;h=c0ec45ce0a23b3fb164ba504280370222e16e945;hb=9d020f5ec16f13012fb1cc72c0871c3f21d4895e;hp=d897fa0166637464ad60250e73033ee9a51091c6;hpb=cc6397a38c087de31659082b4c095ef6a20506b6;p=palacios.git diff --git a/palacios/src/palacios/vmm_ctrl_regs.c b/palacios/src/palacios/vmm_ctrl_regs.c index d897fa0..c0ec45c 100644 --- a/palacios/src/palacios/vmm_ctrl_regs.c +++ b/palacios/src/palacios/vmm_ctrl_regs.c @@ -499,10 +499,12 @@ int v3_handle_efer_read(uint_t msr, struct v3_msr * dst, void * priv_data) { } + +// TODO: this is a disaster we need to clean this up... int v3_handle_efer_write(uint_t msr, struct v3_msr src, void * priv_data) { struct guest_info * info = (struct guest_info *)(priv_data); //struct efer_64 * new_efer = (struct efer_64 *)&(src.value); - // struct efer_64 * shadow_efer = (struct efer_64 *)&(info->ctrl_regs.efer); + struct efer_64 * shadow_efer = (struct efer_64 *)&(info->ctrl_regs.efer); struct v3_msr * guest_efer = &(info->guest_efer); PrintDebug("EFER Write\n"); @@ -512,7 +514,11 @@ int v3_handle_efer_write(uint_t msr, struct v3_msr src, void * priv_data) { // We virtualize the guests efer to hide the SVME and LMA bits guest_efer->value = src.value; - + + // Enable/Disable Syscall + shadow_efer->sce = src.value & 0x1; + + // We have to handle long mode writes.... /*