From: Timo Kreuzer Date: Sat, 20 Nov 2010 16:38:45 +0000 (+0000) Subject: [CRT] X-Git-Tag: backups/GSoC_2011/GSoC_Themes@51550~474 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=f90a97e5a64c633ce9fded3380648f729496e877 [CRT] - Add __readcr4 to crt to compensate for MSVC bug - Compile strnset with MSVC svn path=/branches/cmake-bringup/; revision=49669 --- diff --git a/include/crt/msc/intrin.h b/include/crt/msc/intrin.h index bd903e3f99a..d9b1e4a1cbf 100644 --- a/include/crt/msc/intrin.h +++ b/include/crt/msc/intrin.h @@ -283,12 +283,9 @@ void __writedr(unsigned reg, unsigned __int64 value); unsigned long __readcr0(void); unsigned long __readcr2(void); unsigned long __readcr3(void); -//unsigned long __readcr4(void); +unsigned long __readcr4(void); //#pragma intrinsic(__readcr4) -// HACK: MSVC is broken -unsigned long ___readcr4(void); -#define __readcr4 ___readcr4 - +#pragma function(__readcr4) // HACK: MSVC is broken unsigned int __readdr(unsigned int reg); void __writedr(unsigned reg, unsigned int value); #endif diff --git a/lib/sdk/crt/CMakeLists.txt b/lib/sdk/crt/CMakeLists.txt index 76e907ee8f1..f7c13a2addc 100644 --- a/lib/sdk/crt/CMakeLists.txt +++ b/lib/sdk/crt/CMakeLists.txt @@ -336,6 +336,7 @@ list(APPEND CRT_SOURCE mem/i386/memchr_asm.s mem/i386/memmove_asm.s mem/i386/memset_asm.s + misc/i386/readcr4.S string/i386/strcat_asm.s string/i386/strchr_asm.s string/i386/strcmp_asm.s diff --git a/lib/sdk/crt/misc/i386/readcr4.S b/lib/sdk/crt/misc/i386/readcr4.S new file mode 100644 index 00000000000..6b6ea38c169 --- /dev/null +++ b/lib/sdk/crt/misc/i386/readcr4.S @@ -0,0 +1,12 @@ + +#include + +.code + +PUBLIC ___readcr4 +___readcr4: + mov eax, cr4 + ret + +END + diff --git a/lib/sdk/crt/string/strset.c b/lib/sdk/crt/string/strset.c index 5c7ccd6510a..efa4d074cae 100644 --- a/lib/sdk/crt/string/strset.c +++ b/lib/sdk/crt/string/strset.c @@ -8,10 +8,10 @@ * 25/11/05: Added license header */ -#ifndef _MSC_VER - #if defined(__GNUC__) && !defined(__clang__) #define __int64 long long +#elif defined(_MSC_VER) +#pragma function(_strset) #endif #ifdef _WIN64 @@ -52,4 +52,3 @@ char* _strset(char* szToFill, int szFill) return t; } -#endif