ion@svn.reactos.com wrote:
SYSENTER support, INT2E Optimization, new Syscall Table/Stub generator and svn:ignore fixes. Please read associated Mailing List Post.
Added files: trunk/reactos/tools/nci/ trunk/reactos/tools/nci/makefile trunk/reactos/tools/nci/ncitool.c trunk/reactos/tools/nci/sysfuncs.lst trunk/reactos/tools/nci/w32ksvc.db
Updated files: trunk/reactos/Makefile trunk/reactos/config trunk/reactos/include/napi/shared_data.h trunk/reactos/ntoskrnl/Makefile trunk/reactos/ntoskrnl/include/internal/i386/ke.h trunk/reactos/ntoskrnl/include/internal/i386/ps.h trunk/reactos/ntoskrnl/ke/i386/bthread.S trunk/reactos/ntoskrnl/ke/i386/exp.c trunk/reactos/ntoskrnl/ke/i386/gdt.c trunk/reactos/ntoskrnl/ke/i386/kernel.c trunk/reactos/ntoskrnl/ke/i386/stkswitch.S trunk/reactos/ntoskrnl/ke/i386/syscall.S trunk/reactos/ntoskrnl/ke/i386/usercall.c trunk/reactos/ntoskrnl/ke/kthread.c trunk/reactos/ntoskrnl/ke/process.c trunk/reactos/ntoskrnl/ps/i386/continue.c trunk/reactos/subsys/system/vmwinst/vmwinst.c
Deleted files: trunk/reactos/iface/
First and foremost, I would really like to thank all the people behind the scenes of this patch; Filip Navara, for the initial implementation and thoughts, and his consistent help, Art Yerkes for his invaluable testing, and everyone else who lent a hand (too many people to list here).
This patch improves by around 15-20% (tested but not scientific) the speed of ReactOS on all hardware and virtual machines. Furthermore, it improves speed by over 50% (tested but not scientific) on hardware supporting the SYSENTER/SYSEXIT call pair. On VMWare however, due to causes still under investigation, SYSENTER/SYSEXIT must be disabled, or else there is a 3X slowdown. Vmwinst takes care of writing the Windows-compatible Value in the Registry, and it is read before choosing which kind of call to execute. This means that vmware is able to take advantage of the ~20% speedup, but not of all the full capability of this patch.
It also combines the previous iface tools into a single, much more dynamic and small utility, which I called NCITool (Native Call Interface Tool). Although it is almost final, I still have to set-up the macros for portability and msvc compatibility, so this is a known issue (note however that the previous version suffered from the same incompatibilies). I will fix it during the week. I would like to thank Emanuelle and KJK::Hyperion for the original tool, and most of the parsing code has remained intact, apart from some code-duplication removal and simplification.
The following two issues remain in this patch, which I will look at this week as well:
1) SMP. I have not tested SYSENTER on an SMP machine, and I believe that the MSRs must be written on other CPUs as well, perhaps using an IPI? 2) Pentium Pro. It erronously reports the SEP flag but does not support SYSENTER. Code must be added at the related FIXME in order to check for this.
I have, along with others, tested this patch for more then a week now, and I have found no visible problems, apart from the VMWare weirdness. If any problems are noticed due to it, please post accordingly and I will have a look at it.
Best regards, Alex Ionescu