Hello,
I've updated the FreeMWare CVS. The modifications are:
User side:
- Added a 'guest' directory to contain various test guest kernels.
- Moved the dummy virtcode to guest/virtcode.
- Added Ramon's nullkernel to CVS under guest/cooperative and guest/preemptive
- Made the choice of which guest kernel to load a command line parameter
to the 'user' tool.
Kernel side:
- Reorganized the interrupt/exception handling to prepare for monitor
exception handlers. The kernel now distiguishes between hardware
interrupts (which are forwarded to the host), fatal exceptions (which
cause termination of the VM), and expected exceptions (which are to be
handled by the monitor). The exception assembly stub prepares a
'context' structure containing current guest register values, which
is passed to the monitor's handler. The handler can examine the
situation, decide what to do, and modify the context if necessary
before resuming execution. [ Actual handlers are still missing :-/ ]
The effect of those changes is that you can run the 'virtcode' as before,
and you can also run the 'cooperative' kernel; the latter will instantly
abort due to a not-yet-handled GPF, however ;-)
The next step would be to start writing GPF and page fault handlers for
the monitor, which should as a minimum start virtualization of the GDT
and IDT ...
Any comments?
Bye,
Ulrich
--
Ulrich Weigand,
IMMD 1, Universitaet Erlangen-Nuernberg,
Martensstr. 3, D-91058 Erlangen, Phone: +49 9131 85-7688