ftp://ftp.Plex86.org/pub/plex86/plex86-2000_0605b.tar.gz

I don't want to commit all this to CVS yet, until I get
a chance to clean some things up etc.  But I thought
it would be useful to have people test my latest code mods,
and get back in the loop.  Keep in mind I only tested this
with the cooperative guest.  And depending on what version
of the compiler you use, the code generated for that cooperative
kernel, may be different, and thus may hit instructions I
have not yet implemented.

-Kevin


Here's from the Changelog, which I forgot to update until now:

  - "Kevin P. Lawton" <[EMAIL PROTECTED]>: (plex86-2000_0605b:)
    Added monitor log facility to use (printk like) to print
      debug messages in either host or monitor space.  Text
      is redirected to the host kernel print facility.
    Changed nexus functions to switch from host<-->monitor,
      rather than host<-->guest.  This gives us flexibility to
      return to monitor code anywhere, including in the middle
      of emulating an instruction.
    Moved some fields out of nexus.  Only data needed to
      transition between host<-->monitor/guest context should be
      in nexus.  All other fields are easily accessible from either
      space and should be in VM structure proper.
    kernel/emulation.c now uses same fetchdecode function as
      prescan code.
    Totally recoded emulation.c, and split out emulation of
      many functions into *.c files, which strangely mirror
      the names of files in bochs. :^)  Sorry, this helped
      me keep things straight.
    Added segmentation protection checks to data accesses,
      control transfers, etc, in instruction emulation.
    Added much protection model framework to instruction
      emulation.
    Paged guests are not supported yet, though much of the
      new framework has been thought out with that in mind.
    Likely only the cooperative guest works so far, as that's
      the only one I've been working with, and I implemented
      just enough to get it going.
    Changed the user<-->host<-->monitor interface.  The user
      code does not participate in the emulation of instructions
      any more, except to serve IO and other hardware requests.
    SBE (Scan Before Execute = Prescan) logic is now an integral
      part of plex86.  In fact, both ring0 and ring3 code are
      currently always controlled by SBE.  Much thought went into
      structuring the code, so that we can make a dynamic decision
      to switch SBE off when running ring3 code, yet the emulation
      functions will still work.
    Lots of other doings...
    NOTE: Things should and do run a _lot_ slower for the moment,
      as everything is being controlled by SBE, and I'm not doing
      some things very optimally.  Things will speed up greatly
      in the future.

Reply via email to