[CRT]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 20 Nov 2010 16:38:45 +0000 (16:38 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 20 Nov 2010 16:38:45 +0000 (16:38 +0000)
- Add __readcr4 to crt to compensate for MSVC bug
- Compile strnset with MSVC

svn path=/branches/cmake-bringup/; revision=49669

include/crt/msc/intrin.h
lib/sdk/crt/CMakeLists.txt
lib/sdk/crt/misc/i386/readcr4.S [new file with mode: 0644]
lib/sdk/crt/string/strset.c

index bd903e3..d9b1e4a 100644 (file)
@@ -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
index 76e907e..f7c13a2 100644 (file)
@@ -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 (file)
index 0000000..6b6ea38
--- /dev/null
@@ -0,0 +1,12 @@
+
+#include <asm.inc>
+
+.code
+
+PUBLIC ___readcr4
+___readcr4:
+    mov eax, cr4
+    ret
+
+END
+
index 5c7ccd6..efa4d07 100644 (file)
@@ -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