diff --git a/simulators/bochs/cpu/cpu.cc b/simulators/bochs/cpu/cpu.cc
index f4c4e169d974eeb8cdb9bfeb67e9962803d26ee9..2131687e5c3438262a55f247ab1f8999a5c752a3 100644
--- a/simulators/bochs/cpu/cpu.cc
+++ b/simulators/bochs/cpu/cpu.cc
@@ -507,6 +507,13 @@ unsigned BX_CPU_C::handleAsyncEvent(void)
 #endif
 
       BX_TICKN(10); // when in HLT run time faster for single CPU
+
+      // DanceOS
+#ifdef DANCEOS_RESTORE
+      if (fail::restore_bochs_request) {			
+        return 1;
+      }
+#endif
     }
   } else if (bx_pc_system.kill_bochs_request) {
     // setting kill_bochs_request causes the cpu loop to return ASAP.