Commit graph

10 commits

Author SHA1 Message Date
Timo Kreuzer 8c4aff39a8 [CRT] Refactor CMake files 2021-07-20 23:13:03 +02:00
Jérôme Gardou 0ffbbab5a2 [CRT] Revert unwanted part of f30136bc79 2021-06-29 12:48:25 +02:00
Jérôme Gardou f30136bc79 [NTOS:KE] Test spinlock ownership on both UP & MP build
There is no reason not to, and this avoids introducing bugs stupidly.
2021-06-29 11:49:20 +02:00
Timo Kreuzer db0c59cbd4 [CRT] Use the asm version of sqrt on amd64 2021-05-28 11:52:42 +02:00
Jérôme Gardou 3a14c97d0c [LIBCNTPR] Fix a typo
There is no console to display to.
2021-03-25 11:54:49 +01:00
Jérôme Gardou 2306c83e5c [CMAKE] Explicitly declare libcntpr as a static lib 2021-03-03 08:34:32 +01:00
Timo Kreuzer aff33c855d [CRT] Use chkstk_ms.s on x64 builds 2020-09-20 23:08:17 +02:00
Victor Perevertkin 7e069ccdb2
[CMAKE] Replace custom functions to built-in ones
add_target_compile_definitions -> target_compile_definitions
add_target_compile_flags -> target_compile_options
add_target_include_directories -> target_include_directories
2020-04-16 15:59:38 +03:00
Colin Finck bd0a28d1e4 Fix the MSVC version of ldexp filling up the FPU stack and bailing out with #IND after a few calls. Additionally, add it back to libcntpr.
MSVC was previously given a "result" variable to copy the fscale result from st(0). This led to another "fld" FPU stack push at the very end without popping the source value from the FPU stack.
Moreover, this copy isn't even needed: A simple "fstp st(1)" at the end pops an element from the FPU stack while effectively storing the result in st(0), the register used for returning a double value.
This problem didn't affect GCC, as it is only given the "fscale" instruction and does all necessary stack operations itself.

However, looking into the CRT sources, I found many other i386 implementations with inline assembly suffering from the same problem.
Fortunately, they have been replaced by pure assembly implementations a while ago, so it's time to finally remove them.
ldexp would have also been a candidate for a pure assembly implementation, but the required check for NaN and setting errno (verified on Win2003) already outweighs the benefits.
And we cannot just do a NaN check with FUCOMI as this is an i686/pentiumpro instruction while we're still targeting i586/pentium.

I'm also using this opportunity to clean up the ldexp.c header and only put in the remaining contributors as returned by "git blame".

Thanks to NightWolve1975 for reporting the problem! (https://twitter.com/nightwolve1975/status/1099042477531643912)
2019-03-03 16:11:27 +01:00
Colin Finck c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
Renamed from reactos/sdk/lib/crt/libcntpr.cmake (Browse further)