Using Linux+dosemu to install Windows
Hello.
Quoted 4 lines · Patrick J. LoPresti
Quoted 2 lines
/usr/src/linux/arch/i386/kernel/vm86.cThe attached patch must be a good start for fixing the problem.Ah, so the problem is that the kernel's emulation does not account for multiple prefix bytes?
Yep, that was the problem.
Quoted 2 lines
Will you submit your patch to Alan Cox? It would be nice to get this fixed in the long run.
Yes, I'll try to submit this one.
Quoted 1 line
One more thing. How precise should the emuluation be?
Hmm, 100%? :)
Quoted 3 lines
The popfd instruction should not modify the VM or RF bits. (Not to mention any bits which are reserved in the current revision of the CPU.) Or does the kernel already take care of these concerns?
Yes, see how the thread.v86mask gets initialised in do_sys_vm86().
Quoted 2 lines
I believe clearing those flags is a bad idea. They are both used routinely to detect the CPU version:
I agree:(
The only good thing here is that the amount of progs that works on 486 but not on 386 is very minor...
Quoted 2 lines
I suggest removing the BUG: stuff from the dosemu source code, then figuring out what the real problem is and fixing it properly.
This was suggested several times before but still noone figured out the real problem so all that suggestions failed.
Quoted 1 line
What do you think?
Currently the "BUG" cannot be removed. Just set the $_cpu=(80486) and try to run FoxPro after removing the "BUG" from dpmi.c and sigsegv.c (there are 3 places where the AC gets cleared) and it will crash.
Furthermore somehow it happens that if the signal was received while AC is set, dosemu itself executes with AC set and crashs somewhere in glibc functions due to exception 0x11.
If you can find the roots of the problem, the "BUG" will be removed, thats for sure... My guess is that the problem is somewhere in the kernel/vm86() because when CPU-emu is used, the "BUG" doesn't occure.
A message that is not in the archive (sent off-list or not yet received): mit.lcs.mail.linux-msdos/[email protected]
Quoted 3 lines · Stas Sergeev
I agree:(
The only good thing here is that the amount of progs that works on 486 but not on 386 is very minor...
But how annoying when you run into one :-).
Quoted 4 lines
Currently the "BUG" cannot be removed. Just set the $_cpu=(80486) and try to run FoxPro after removing the "BUG" from
dpmi.candsigsegv.c(there are 3 places where the AC gets cleared) and it will crash.
Couldn't you just tell people to use $_cpu=(80386) as a workaround? That would have the side-effect of protecting the AC bit, wouldn't it?
Or, if that is too extreme, you could have a configuration option to specifically protect those bits.
Quoted 3 lines
Furthermore somehow it happens that if the signal was received while AC is set, dosemu itself executes with AC set and crashs somewhere in glibc functions due to exception
0x11.
Is that not a bug in the emulator design? I mean, shouldn't *all* of the emulator's state be isolated from the emulated machine's?
I am sorry for asking so many stupid questions; I do not fully understand the vm86 design (yet).
Quoted 4 lines
If you can find the roots of the problem, the "BUG" will be removed, thats for sure... My guess is that the problem is somewhere in the kernel/vm86() because when CPU-emu is used, the "BUG" doesn't occure.
I am not sure I have time to debug FoxPro... But I do have time to create a patch to allow people to enable the BUG: code from dosemu.conf. Would you accept such a patch?
- Pat