81 lines
2.4 KiB
Plaintext
81 lines
2.4 KiB
Plaintext
----------------------------------------------------------------------
|
|
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"));
|