This changes expand the user mode data/code segment to 4GB. This is
wrong. If I change it back to the correct limit, the sysenter support
doesn't work. Ros does crash within the first application (smss). See
the debug output.
- Hartmut
Hi Hartmut,
The changes are not wrong. This is required as per the SYSENTER/SYSEXIT
documentation. Please see Intel's Programmers Manual, Volume 2A:
The SYSEXIT instruction always transfers to a flat protected mode user
at CPL = 3. SYSEXIT can be invoked only from protected mode and CPL = 0.
The instruction requires that the following conditions are met by the
operating system:
The CS selector for the target ring 3 code segment is 32 bits,
mapped as a flat 0-4 GB address space with execute, read, and
non-conforming permissions.
The SS selector for the target ring 3 stack segment is 32 bits,
mapped as a flat 0-4 GB address space with expand-up, read, and write
permissions.
This is also a requirement for proper VMWare support and other emulators
which depend on this fact. Please set it back to a Flat segment.
Best regards,
Alex Ionescu