From ae74cf99ea1513b7bd03e3a39fa49d3b715f225e Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 18 Dec 2022 21:18:45 +0100 Subject: use pause opcode when waiting for vbox result --- utils.h | 9 ++++++--- vboxhgcm.h | 1 + 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(); } } -- cgit v1.2.3