[NTOS]: Rework the trap macros again. This time we needed some added complexity becau...
authorSir Richard <sir_richard@svn.reactos.org>
Wed, 27 Jan 2010 03:05:10 +0000 (03:05 +0000)
committerSir Richard <sir_richard@svn.reactos.org>
Wed, 27 Jan 2010 03:05:10 +0000 (03:05 +0000)
commit90e0457d606c7088a3082397cf11c8c94aa1e862
treea799053fb79833ec5aeacd96f2fb00f3ec21495b
parente6111d4302701dde9caeb48b00e521ffdd652aed
[NTOS]: Rework the trap macros again. This time we needed some added complexity because of the need for runtime patching at boot. We got away with it nicely and basically implement a simple "if" in ASM, which gives us a deterministic set of instructions (vs the compiler). We then patch if if needed (see next bullet).
[NTOS]: Support systems without SYSENTER. Nothing was actually disabling the SYSEXIT mechanism recently enabled. Now IRET is always used unless a SYSENTER machine is discovered, in which case the jmp to the IRET code is patched with a jmp to SYSEXIT code.
[PERF]: Set WP0 bit in CR0 later, thus allowing the existing runtime patches (and this new one) to function without requiring MmSetPageProtect. Saves TLB flushes and page table walking/mapping on boot.
Left in some debug prints to see what buildbot reports...will remove if it survives.

svn path=/trunk/; revision=45280
reactos/ntoskrnl/include/internal/i386/ke.h
reactos/ntoskrnl/include/internal/trap_x.h
reactos/ntoskrnl/ke/i386/cpu.c
reactos/ntoskrnl/ke/i386/kiinit.c