ion(a)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