A fair number of things seem to do a WBINVD on bootup. I think we can just
ignore it -- it should clear the caches, and we only have a one-instruction
icache. Kevin, am I wrong? I don't know what effect the host's cache would
have...
Oh, the patch is against current CVS.
-=- James Mastros
--
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GU>CS d->-- s-:- a20 C++ UL+++@ P+++>+++++ L++@ E-() N o? K? w@ M-- !V
PS++ PE Y+ PGP(-) t++@ 5+ X+++ R+ tv+ b+++ DI+ D+ G e>++ h! r- y?
------END GEEK CODE BLOCK------
Index: emulation.c
===================================================================
RCS file: /cvsroot-plex86/plex86/kernel/emulation/emulation.c,v
retrieving revision 1.10
diff -u -r1.10 emulation.c
--- emulation.c 2000/11/16 07:27:13 1.10
+++ emulation.c 2000/11/19 03:54:30
@@ -1052,6 +1052,10 @@
CLTS(vm);
goto advance;
+ case 0x109:
+ WBINVD(vm);
+ goto advance;
+
case 0x120:
MOV_RdCd(vm);
goto advance;
Index: proc_ctrl.c
===================================================================
RCS file: /cvsroot-plex86/plex86/kernel/emulation/proc_ctrl.c,v
retrieving revision 1.5
diff -u -r1.5 proc_ctrl.c
--- proc_ctrl.c 2000/11/16 07:27:14 1.5
+++ proc_ctrl.c 2000/11/19 03:54:31
@@ -129,7 +129,15 @@
SetCR0(vm, cr0);
}
- void
+/* does this belong here? */
+ void
+WBINVD(vm_t *vm)
+{
+ /* We've only got a very minimal cache -- it shouldn't get in the way. */
+ monprint(vm, "Ignoring WBINVD\n");
+}
+
+ void
INVLPG(vm_t *vm)
{
monpanic(vm, "INVLPG:\n");