#include <palacios/vmm_ctrl_regs.h>
#include <palacios/svm_io.h>
#include <palacios/vmm_halt.h>
+#include <palacios/vmm_mwait.h>
#include <palacios/svm_pause.h>
#include <palacios/svm_wbinvd.h>
#include <palacios/vmm_intr.h>
return -1;
}
break;
+
+ case SVM_EXIT_CR8_WRITE:
+#ifdef V3_CONFIG_DEBUG_CTRL_REGS
+ PrintDebug("CR8 Read\n");
+#endif
+ if (v3_handle_cr8_read(info) == -1) {
+ return -1;
+ }
+ break;
+
+ case SVM_EXIT_CR8_READ:
+#ifdef V3_CONFIG_DEBUG_CTRL_REGS
+ PrintDebug("CR8 Read\n");
+#endif
+ if (v3_handle_cr8_read(info) == -1) {
+ return -1;
+ }
+ break;
+
case SVM_EXIT_EXCP14: {
addr_t fault_addr = exit_info2;
pf_error_t * error_code = (pf_error_t *)&(exit_info1);
return -1;
}
break;
+
+ case SVM_EXIT_MONITOR:
+#ifdef V3_CONFIG_DEBUG_MWAIT
+ PrintDebug("Guest issuing MONITOR\n");
+#endif
+ if (v3_handle_monitor(info) == -1) {
+ return -1;
+ }
+ break;
+
+ case SVM_EXIT_MWAIT:
+ case SVM_EXIT_MWAIT_CONDITIONAL:
+#ifdef V3_CONFIG_DEBUG_MWAIT
+ PrintDebug("Guest issuing MWAIT\n");
+#endif
+ if (v3_handle_mwait(info) == -1) {
+ return -1;
+ }
+ break;
+
case SVM_EXIT_PAUSE:
// PrintDebug("Guest paused\n");
if (v3_handle_svm_pause(info) == -1) {