Updates for new version of qemu
[pintos-anon] / src / utils / pintos
index 4b385cdf87553a07f1d5c1a2667a260b145a416c..eca4708516e41f3c715d2145e761ba775036ed6a 100755 (executable)
@@ -618,8 +618,9 @@ sub run_qemu {
       if $vga eq 'terminal';
     print "warning: qemu doesn't support jitter\n"
       if defined $jitter;
-    my (@cmd) = ('qemu');
-    push (@cmd, '-no-kqemu');
+    my (@cmd) = ('qemu-system-i386');
+    push (@cmd, '-device', 'isa-debug-exit');
+
     push (@cmd, '-hda', $disks[0]) if defined $disks[0];
     push (@cmd, '-hdb', $disks[1]) if defined $disks[1];
     push (@cmd, '-hdc', $disks[2]) if defined $disks[2];
@@ -820,7 +821,7 @@ sub xsystem {
            for (;;) {
                if (waitpid ($pid, WNOHANG) != 0) {
                    # Subprocess died.  Pass through any remaining data.
-                   print $buf while sysread ($in, $buf, 4096) > 0;
+                   do { print $buf } while sysread ($in, $buf, 4096) > 0;
                    last;
                }
 
@@ -858,7 +859,11 @@ sub xsystem {
            exit 0;
        }
 
-       return $?;
+        # Kind of a gross hack, because qemu's isa-debug-exit device
+        # only allows odd-numbered exit values, so we can't exit
+        # cleanly with 0.  We use exit status 0x63 as an alternate
+        # "clean" exit status.
+       return ($? != 0x6300) && $?;
     }
 }