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