diff options
author | Javier <dev.git@javispedro.com> | 2022-12-18 21:18:45 +0100 |
---|---|---|
committer | Javier <dev.git@javispedro.com> | 2022-12-18 21:18:45 +0100 |
commit | ae74cf99ea1513b7bd03e3a39fa49d3b715f225e (patch) | |
tree | 3d293aa224f825fa0c3c19d4e19676f4db14b5fd | |
parent | 9a33ea807b463e3ef344e4237eedee4f618d2788 (diff) | |
download | vbados-ae74cf99ea1513b7bd03e3a39fa49d3b715f225e.tar.gz vbados-ae74cf99ea1513b7bd03e3a39fa49d3b715f225e.zip |
use pause opcode when waiting for vbox result
-rw-r--r-- | utils.h | 9 | ||||
-rw-r--r-- | vboxhgcm.h | 1 |
2 files changed, 7 insertions, 3 deletions
@@ -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). */ @@ -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(); } } |