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.