Hello,
I've now re-enabled support for monitor-side fault handlers
with the new multi-VM scheme.
This works by mapping the pages comprising the FreeMWare module
at arbitrary unused linear addresses into the guest address space,
and then choosing the monitor code/data segment base so that the
offset of the module code relative to the monitor segments happens
to coincide with the offset of the module code relative to the
kernel segments in the host address space. This way, we can actually
execute the position-dependent code generated by gcc, and thus write
the monitor-side handlers in C ...
To allow access to the nexus structure, I've merged the nexus page
with the monitor stack page, so that it becomes possible to access
the current nexus simply by masking off the low bits of the current
%esp value. This can be employed by monitor-side code to access
the nexus for communicating with the host.
Bye,
Ulrich
--
Ulrich Weigand,
IMMD 1, Universitaet Erlangen-Nuernberg,
Martensstr. 3, D-91058 Erlangen, Phone: +49 9131 85-7688