[ros-dev] Re: [ros-svn] [ion] 13090: SYSENTER support, INT2E Optimization, new Syscall Table/Stub generator and svn:ignore fixes. Please read associated Mailing List Post.

Alex Ionescu ionucu at videotron.ca
Mon Jan 17 02:21:49 CET 2005


ion at 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


More information about the Ros-dev mailing list