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

Reply via email to