Hi all,
Here's another patch. Summary of changes:
- I added a new kernel, guest/paging, which is a copy
of the preemptive kernel with paging (identitity map)
added.
- Changed all of the entry points of the guest kernels
to 1MB, so I could load them on my pentium with GRUB.
Which uncovered the following bug...
- Fixed kernel/emulation.c not to ignore the granularity
bit when checking segment limits.
- Fixed cpl/iopl behavior of IRET, CLI and STI in
kernel/emulation.c
- Added completely new eflags handling; now uses
nexus_t::guest_eflags and nexus_t::mon_eflags;
lots of eflags macros (and doc) in freemware.h;
eflags fixed in nexus.S, monitor.c, fault.c,
and emulation.c, and small fixes on the user
side (user.c).
Question:
In kernel/monitor.c:set_guest_context() I found the following
comment:
/*
* We don't allow to modify segment registers for now;
* we don't want user mode to be able to crash the kernel ...
*/
I don't see any reason for this. Is this still applicable ?
If not, we should copy the segment registers to the VM
context along with all other registers.
I finished the items in my previous WORK mail.
-- Ramon
fmw.flag.patch.gz