A quick snapshot of what I've been working on.

Besides hashing out the lightweight dynamic translation scheme
that I began to explain in the docs, I'm working on some
more related standalone testbed code which builds on the
existing dt-testbed/ code.  It will have the hash table
concepts from the docs plus the ring3 branch handler
concepts from the previous dt-testbed/ code.  That'll
give me most of what I need to test a prototype, before
adding it to plex86.

A couple options that might be fun:

  - A simplistic direct branch mechanism to chain segments of tcode
    for out-of-page static branches, and possibly some dynamic branches.
    Destination tcode addresses are inlined into the code along with
    an ID token.  Each time there is a context switch (PDBR reload etc),
    a global ID is incremented.  If the IDs match, the destination
    tcode address can be taken.  If not, the branch handler can revalidate
    the destination tcode address and backpatch in a new ID into the
    inlined code, as well as tcode address if necessary.  

  - When user segments span the ring3 handler storage area, possibly
    use direct access to the storage area (and/or use the guest stack)
    for state saving/restoring of simple operations.  This would save
    segment register reloading.


-Kevin

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Kevin Lawton                        [EMAIL PROTECTED]
MandrakeSoft, Inc.                  Plex86 developer
http://www.linux-mandrake.com/      http://www.plex86.org/

Hopkins' Law: no clever idea in computer architecture ever goes unpunished.

Reply via email to