|
From: luca a. <l_...@ho...> - 2001-10-09 09:33:31
|
To everyone that is interested:
I just committed to the CVS repository a quick workaround for booting oslib
programs with the newest grub versions.
As a consequence, the x.exe eXtender has been modified too. If you use the
old version, oslib programs will not understand that they have been run
through the extender (X_callBIOS() and DOS_*() functions will not be usable,
the system will halt on exit, and so on...).
I'll commit the new eXtender in a short time.
I also downloaded the latest bochs snapshot, and tested all the oslib
examples. In general, everything seems to work well.
There are only 2 problems:
1) sometime, the time (read from the PIT) seems to go back: the timetest.c
program shows this problem by failing at line 68.
I still don't know if this is an oslib problem or a bochs problem, and I
still have to investigate it (the test works fine on bare hardware, but I
want to be sure before allarming bochs people).
2) the biosdemo.c test fails when returning from vm86 mode.
I think this is a bochs problem.
In fact, if you look in the bochs sources, in cpu/vm86.cc, you can see
BX_CPU_C::stack_return_from_v86(BxInstruction_t *i)
{
//BX_INFO(("stack_return_from_v86:"));
exception(BX_GP_EXCEPTION, 0, 0);
#if 0
if (IOPL !=3) {
...
Hence, an iret in vm86 mode will always fail... I think this is wrong.
Changing it with
BX_CPU_C::stack_return_from_v86(BxInstruction_t *i)
{
//BX_INFO(("stack_return_from_v86:"));
#if 0
exception(BX_GP_EXCEPTION, 0, 0);
#else
if (IOPL !=3) {
...
works better. Looking at the comments this code was probably disabled
because some more check is needed... I don't know the bochs internals, hence
I am completely clueless here...
Well, I think this is all for now
Luca
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp
|