- This patch adds MOV_CdRd in v8086 mode (from Martin Str|mberg)

This commit is contained in:
Christophe Bothamy 2002-08-10 12:02:52 +00:00
parent 0d46cfdad9
commit ee085e1f55
1 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,80 @@
----------------------------------------------------------------------
Patch name: patch.MOV_CdRd-v86-ams
Author: Martin Str|mberg
Date: August 10th, 2002
Detailed description:
This patch adds MOV_CdRd handling in v8086 mode
Patch was created with:
cvs diff -u
Apply patch to what version:
cvs checked out on August 10th, 2002
Instructions:
To patch, go to main bochs directory.
Type "patch -p0 < THIS_PATCH_FILE".
----------------------------------------------------------------------
Index: cpu/proc_ctrl.cc
===================================================================
RCS file: /cvsroot/bochs/bochs/cpu/proc_ctrl.cc,v
retrieving revision 1.24
diff -u -r1.24 proc_ctrl.cc
--- cpu/proc_ctrl.cc 1 Aug 2002 07:23:11 -0000 1.24
+++ cpu/proc_ctrl.cc 10 Aug 2002 11:57:36 -0000
@@ -366,7 +366,7 @@
Bit16u msw;
Bit32u cr0;
- if (v8086_mode()) BX_PANIC(("proc_ctrl: v8086 mode unsupported"));
+ if (v8086_mode()) BX_PANIC(("proc_ctrl: LMSW in v8086 mode unsupported"));
if ( protected_mode() ) {
if ( CPL != 0 ) {
@@ -448,7 +448,7 @@
Bit32u val_32;
- if (v8086_mode()) BX_PANIC(("proc_ctrl: v8086 mode unsupported"));
+/* if (v8086_mode()) BX_PANIC(("proc_ctrl: MOV_CdRd in v8086 mode unsupported"));*/
/* NOTES:
* 32bit operands always used
@@ -463,7 +463,7 @@
invalidate_prefetch_q();
- if (protected_mode() && CPL!=0) {
+ if ((protected_mode() || v8086_mode()) && CPL!=0) {
BX_PANIC(("MOV_CdRd: CPL!=0"));
/* #GP(0) if CPL is not 0 */
exception(BX_GP_EXCEPTION, 0, 0);
@@ -531,7 +531,7 @@
#else
Bit32u val_32;
- if (v8086_mode()) BX_PANIC(("proc_ctrl: v8086 mode unsupported"));
+/* if (v8086_mode()) BX_PANIC(("proc_ctrl: MOV_RdCd in v8086 mode unsupported"));*/
/* NOTES:
* 32bit operands always used
@@ -544,9 +544,8 @@
BX_PANIC(("MOV_RdCd(): rm field not a register!"));
}
- if (protected_mode() && CPL!=0) {
-// BX_PANIC(("MOV_RdCd: CPL!=0"));
- /* #GP(0) if CPL is not 0 */
+ if ((protected_mode() || v8086_mode()) && CPL!=0) {
+ BX_INFO(("MOV_RdCd: CPL!=0"));
exception(BX_GP_EXCEPTION, 0, 0);
return;
}
@@ -633,7 +632,7 @@
Bit16u base_15_0, limit;
Bit8u base_23_16, access;
- if (v8086_mode()) BX_PANIC(("proc_ctrl: v8086 mode unsupported"));
+ if (v8086_mode()) BX_PANIC(("proc_ctrl: LOADALL in v8086 mode unsupported"));
#if BX_CPU_LEVEL > 2
BX_PANIC(("loadall: not implemented for 386"));