shadow_efer->lma = 1;
shadow_efer->lme = 1;
-
- v3_print_segments(info);
PrintDebug("New EFER %p\n", (void *)*(addr_t *)(shadow_efer));
}
}
+
+// 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");
// We virtualize the guests efer to hide the SVME and LMA bits
guest_efer->value = src.value;
-
- v3_print_segments(info);
+
+ // Enable/Disable Syscall
+ shadow_efer->sce = src.value & 0x1;
+
+
// We have to handle long mode writes....
/*