* [Qemu-devel] [5403] Do not use load_seg_vm to load CS in real mode iret handling
@ 2008-10-02 20:02 malc
0 siblings, 0 replies; only message in thread
From: malc @ 2008-10-02 20:02 UTC (permalink / raw)
To: qemu-devel
Revision: 5403
http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5403
Author: malc
Date: 2008-10-02 20:02:27 +0000 (Thu, 02 Oct 2008)
Log Message:
-----------
Do not use load_seg_vm to load CS in real mode iret handling
load_seg_vm calls cpu_x86_load_seg_cache which updates hflags of
current env, real hardware doesn't do this, nor the code that handles
real mode lret/lcall/ljmp.
This unbreaks "unreal mode" and makes QEMU the first emulator being
able to run Project Angel demo by IMPACT Studios. (Not that there are
many physical machines out there capable of doing the same)
Modified Paths:
--------------
trunk/target-i386/op_helper.c
Modified: trunk/target-i386/op_helper.c
===================================================================
--- trunk/target-i386/op_helper.c 2008-10-02 19:55:50 UTC (rev 5402)
+++ trunk/target-i386/op_helper.c 2008-10-02 20:02:27 UTC (rev 5403)
@@ -2651,7 +2651,8 @@
POPW(ssp, sp, sp_mask, new_eflags);
}
ESP = (ESP & ~sp_mask) | (sp & sp_mask);
- load_seg_vm(R_CS, new_cs);
+ env->segs[R_CS].selector = new_cs;
+ env->segs[R_CS].base = (new_cs << 4);
env->eip = new_eip;
if (env->eflags & VM_MASK)
eflags_mask = TF_MASK | AC_MASK | ID_MASK | IF_MASK | RF_MASK | NT_MASK;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-10-02 20:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-02 20:02 [Qemu-devel] [5403] Do not use load_seg_vm to load CS in real mode iret handling malc
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).