aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--utils.h9
-rw-r--r--vboxhgcm.h1
2 files changed, 7 insertions, 3 deletions
diff --git a/utils.h b/utils.h
index e207b44..715294e 100644
--- a/utils.h
+++ b/utils.h
@@ -33,14 +33,17 @@
static inline void breakpoint(void);
#pragma aux breakpoint = 0xcd 0x03;
+static inline void pause(void);
+#pragma aux pause = 0xf3 0x90 modify exact [];
+
static inline __segment get_cs(void);
-#pragma aux get_cs = "mov ax, cs" value [ax] modify exact [];
+#pragma aux get_cs = "mov ax, cs" value [ax] modify exact [] nomemory;
static inline __segment get_ds(void);
-#pragma aux get_ds = "mov ax, ds" value [ax] modify exact [];
+#pragma aux get_ds = "mov ax, ds" value [ax] modify exact [] nomemory;
static inline __segment get_ss(void);
-#pragma aux get_ss = "mov ax, ss" value [ax] modify exact [];
+#pragma aux get_ss = "mov ax, ss" value [ax] modify exact [] nomemory;
/** Converts a far pointer into equivalent linear address.
* Note that under protected mode linear != physical (for that, need VDS). */
diff --git a/vboxhgcm.h b/vboxhgcm.h
index bb95eb3..72a7481 100644
--- a/vboxhgcm.h
+++ b/vboxhgcm.h
@@ -32,6 +32,7 @@ static void vbox_hgcm_wait(VMMDevHGCMRequestHeader __far * req)
while (!(*req_flags & VBOX_HGCM_REQ_DONE)) {
// TODO yield guest CPU somehow?
+ pause();
}
}