ftp://ftp.freemware.org/pub/freemware/fmw-19991212c.tar.gz
Ulrich, here's my latest doings. It's the mods I made to
make the monitor/guest use it's own linear space, detached
completely from the host. Plus, I reintegrated the newer
mods since I last got a snapshot from CVS. Not sure
if it matters, but any file in any of the CVS dirs is
not up to date.
I did disable a few things with respect to the new
emulation stuff, but the new code is all there.
Some notes and areas that need some work. Anyone willing,
go for it.
- Feel free to go through host-linux.c and
actually support multiple VMs. I just hardcoded vm[0]
for testing.
- All the pages that the host allocates for the VM are now
in vm[i].pages. We should go through host-linux.c and
see if they are always unallocated/cleared properly under
conditions where you run the user code multiple times
without rmmod/insmod'ing the kernel driver.
- We've got to handle return error codes from the kernel
better in user.c. I have some small mods to disable
some code in user.c. Look for "+++". Once we clean
up the return code handling, can re-enable code or
modify it.
- I added a new file kernel/nexus.S. I hand coded some
relocatable assembly code/data structures which effect
the transition from host<-->monitor/guest. You have
to be really be aware of what's going on in there to
make changes to it, lest you'll find yourself punching
the reset button.
If anyone is interested, I'll make some graphs to show
how the transitions between linear address spaces work.
Could throw some GIFs in a docs directory as well.
Or if anyone else wants to, go nuts. :^)
- I need to go through monitor.c and clean it up. I use
a bunch of pointers in there to get to structures in
the file nexus.S. I really should have one pointer to
a structure which maps into the assembly data structures.
That will be a lot cleaner. I'll do this one. monitor.c
is currently kinda messy.
- As I mentioned before, it would be helpful to have some
benchmarks to see what kind of performance hit we take
switching back/forth between host/monitor+guest.
It's not real friendly to the paging TLB cache. :^)
-Kevin