Add some code that does ... nothing, but fixes 2nd stage boot with msvc. To figure out why this is needed, is left as an excercise to the reader :)
svn path=/trunk/; revision=52496
- Fix several bugs related to the FD_WRITE event
- We would not set the sendable poll state if the socket had data waiting to be sent even if there was buffer space
- We did not set the poll state after performing a send
- We did not clear the sendable poll state if we ran out of buffer space
svn path=/trunk/; revision=52492
Remove the old boot method.
Its not needed anymore, since booting with more than 4GB works fine with the new method now. It didn't work anyway since the neccessary code in the kernel has been #if'ed out in r49445
svn path=/trunk/; revision=52491
Revert r52482, it didn't really work. Instead grab the StallScaleFactor from the PCR and use this as a base for the repeat count.
svn path=/trunk/; revision=52487
Use KeStallExecutionProcessor, once its ready (after KdDebuggerInitialize1 was called) for the receive timeout. Repeat 100 times with 1 ms wait. This seems to work quite well, but might be tuned for better values.
svn path=/trunk/; revision=52482
On amd64 builds, where we don't have underscored symbols, create an alias fabs for the function _fabs, since we cannot create fabs as a label directly
svn path=/trunk/; revision=52481
change the way import libs are created for MSVC. Since we don't use underscores in symbols on other architectures than x86, its not possible to create labels like "div", since it conflicts with the opcode. Therefore add a prefix and redirect all exports to the prefixed version when building an importlib
svn path=/trunk/; revision=52476
- unify spec2def and add_importlib_target, thanks to cmake_parse_arguments.
- also generate stub files only when necessary.
- better precompiled header support, commented out as it wasn't tested on any other machine than mine, and it depends on cmake features which don't exist yet.
For now only for gcc toolchain
svn path=/trunk/; revision=52460
- Fix Zw-systemcall stubs on MSVC
- Fix systemcall return stubs on MSVC
-> MSVC kernel boots and usetup works!
Didn't test anymore, because there is a massive atapi debug spam
svn path=/trunk/; revision=52457
- Don't try to load referenced dlls in any other dir than system32. A second attempt would fail on the first dll that was already loaded and the function would bail out before any missing dll could be loaded. This worked only by chance on gcc builds, because the 1st import was bootvid, which was always loaded in the 2nd attempt from system32, and the function failed after that, since hal and kdcom were already loaded.
svn path=/trunk/; revision=52452
- The long awaited LDR rewrite, a commit for testing the new implementation. In case of serious problems it may be reverted (revert should be approved by me).
- Its features include:
* A proper ...everything. Process, thread initialization codes, DLL loading (including compatible path lookup, and compatible/proper loading order of the dependent DLLs, including their initialization) and mapping and section creation, reference counting, relocations, good and understandable PE code for walking import descriptor, snapping, etc etc. Hacks--; GoodCode++;
* Activation contexts operations are now being performed compatible to how Windows performs them (though the actual actctx implementation is still Wine's, it was modified to be compatible). Previously, actctx stuff was added to the ldr code like a pepper is added to the soup: in different places until it starts to work.
* Partial DLL redirection implementation.
* Possibility to support Shim engine and app compat stuff in future.
* More cool stuff, just browse the code.
- I fixed all regressions I could find but one (hang during shutdown of the 3rd stage). The purpose of this commit is to seek and destroy the regressions I couldn't find (if there are any).
- Some of the old rarely called ldr code still remains in startup.c and utils.c. They are subject to be rewritten/removed soon, and every remaining old function is marked with a respective DPRINT1 to see when it's being called.
svn path=/trunk/; revision=52446