Author: akhaldi Date: Fri Feb 11 13:48:41 2011 New Revision: 50656
URL: http://svn.reactos.org/svn/reactos?rev=50656&view=rev Log: Reduce difference with the cmake branch, mostly msvc and amd64 fixes.
Modified: trunk/reactos/boot/freeldr/freeldr/windows/winldr.c trunk/reactos/drivers/storage/classpnp/class.c trunk/reactos/drivers/storage/classpnp/obsolete.c trunk/reactos/include/crt/mingw32/intrin_x86.h trunk/reactos/include/crt/setjmp.h trunk/reactos/include/crt/stddef.h trunk/reactos/include/crt/stdlib.h trunk/reactos/include/crt/string.h trunk/reactos/include/crt/sys/stat.h trunk/reactos/include/crt/vadefs.h trunk/reactos/include/ndk/inline_ntcurrentteb.h trunk/reactos/include/ndk/peb_teb.h trunk/reactos/include/psdk/rpc.h trunk/reactos/include/psdk/strsafe.h trunk/reactos/include/psdk/unknown.h trunk/reactos/include/psdk/wspiapi.h trunk/reactos/include/reactos/asm.h trunk/reactos/include/reactos/mingw-w64/sect_attribs.h trunk/reactos/include/xdk/kefuncs.h trunk/reactos/lib/drivers/ip/network/i386/checksum.S trunk/reactos/ntoskrnl/include/internal/i386/intrin_i.h trunk/reactos/ntoskrnl/ke/i386/cpu.c trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c trunk/reactos/ntoskrnl/mm/ARM3/miarm.h trunk/reactos/tools/unicode/string.c trunk/reactos/tools/unicode/wine/unicode.h
Modified: trunk/reactos/boot/freeldr/freeldr/windows/winldr.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/window... ============================================================================== --- trunk/reactos/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -39,6 +39,10 @@ extern ULONG LoaderPagesSpanned; extern BOOLEAN AcpiPresent;
+extern HEADLESS_LOADER_BLOCK LoaderRedirectionInformation; +extern BOOLEAN WinLdrTerminalConnected; +extern void WinLdrSetupEms(IN PCHAR BootOptions); + BOOLEAN WinLdrCheckForLoadedDll(IN OUT PLOADER_PARAMETER_BLOCK WinLdrBlock, IN PCH DllName, @@ -206,8 +210,6 @@
#ifdef _M_IX86 /* Set headless block pointer */ - extern HEADLESS_LOADER_BLOCK LoaderRedirectionInformation; - extern BOOLEAN WinLdrTerminalConnected; if (WinLdrTerminalConnected) { Extension->HeadlessLoaderBlock = MmHeapAlloc(sizeof(HEADLESS_LOADER_BLOCK)); @@ -537,7 +539,6 @@
#ifdef _M_IX86 /* Setup redirection support */ - extern void WinLdrSetupEms(IN PCHAR BootOptions); WinLdrSetupEms(BootOptions); #endif /* Detect hardware */
Modified: trunk/reactos/drivers/storage/classpnp/class.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/classpnp/cl... ============================================================================== --- trunk/reactos/drivers/storage/classpnp/class.c [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/classpnp/class.c [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -2485,7 +2485,7 @@ retry = TRUE; }
- if (retry && (irpStack->Parameters.Others.Argument4--)) { + if (retry && ((*(PCHAR*)&irpStack->Parameters.Others.Argument4)--)) {
// // Retry request.
Modified: trunk/reactos/drivers/storage/classpnp/obsolete.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/classpnp/ob... ============================================================================== --- trunk/reactos/drivers/storage/classpnp/obsolete.c [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/classpnp/obsolete.c [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -161,7 +161,7 @@ retry = TRUE; }
- if (retry && (irpStack->Parameters.Others.Argument4--)) { + if (retry && ((*(PCHAR*)&irpStack->Parameters.Others.Argument4)--)) {
// // Retry request. If the class driver has supplied a StartIo,
Modified: trunk/reactos/include/crt/mingw32/intrin_x86.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/mingw32/intrin_... ============================================================================== --- trunk/reactos/include/crt/mingw32/intrin_x86.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/mingw32/intrin_x86.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -1128,6 +1128,39 @@ __asm__ __volatile__("rep; outsl" : : [Port] "d" (Port), [Buffer] "S" (Buffer), "c" (Count)); }
+__INTRIN_INLINE int _inp(unsigned short Port) +{ + return __inbyte(Port); +} + +__INTRIN_INLINE unsigned short _inpw(unsigned short Port) +{ + return __inword(Port); +} + +__INTRIN_INLINE unsigned long _inpd(unsigned short Port) +{ + return __indword(Port); +} + +__INTRIN_INLINE int _outp(unsigned short Port, int databyte) +{ + __outbyte(Port, databyte); + return databyte; +} + +__INTRIN_INLINE unsigned short _outpw(unsigned short Port, unsigned short dataword) +{ + __outword(Port, dataword); + return dataword; +} + +__INTRIN_INLINE unsigned long _outpd(unsigned short Port, unsigned long dataword) +{ + __outdword(Port, dataword); + return dataword; +} +
/*** System information ***/ __INTRIN_INLINE void __cpuid(int CPUInfo[], const int InfoType)
Modified: trunk/reactos/include/crt/setjmp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/setjmp.h?rev=50... ============================================================================== --- trunk/reactos/include/crt/setjmp.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/setjmp.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -145,9 +145,6 @@ #define _JMP_BUF_DEFINED #endif
-#ifdef _MSC_VER -int __cdecl __MINGW_NOTHROW setjmp(jmp_buf _Buf); -#else #ifdef USE_MINGW_SETJMP_TWO_ARGS #ifndef _INC_SETJMPEX #if defined(__x86_64) @@ -158,20 +155,19 @@ ({ void* value; __asm__ __volatile__("movl %%esp, %[value]" : [value] "=r" (value)); value; }) #endif #define setjmp(BUF) _setjmp((BUF),mingw_getsp()) - int __cdecl __MINGW_NOTHROW _setjmp(jmp_buf _Buf,void *_Ctx); -#else + int __MINGW_NOTHROW __cdecl _setjmp(jmp_buf _Buf,void *_Ctx); +#else /* _INC_SETJMPEX */ #undef setjmp #define setjmp(BUF) _setjmpex((BUF),mingw_getsp()) #define setjmpex(BUF) _setjmpex((BUF),mingw_getsp()) - int __cdecl __MINGW_NOTHROW _setjmpex(jmp_buf _Buf,void *_Ctx); -#endif -#else + int __MINGW_NOTHROW __cdecl _setjmpex(jmp_buf _Buf,void *_Ctx); +#endif /* _INC_SETJMPEX */ +#else /* !USE_MINGW_SETJMP_TWO_ARGS */ #ifndef _INC_SETJMPEX #define setjmp _setjmp #endif - int __cdecl __MINGW_NOTHROW setjmp(jmp_buf _Buf); -#endif -#endif + int __MINGW_NOTHROW __cdecl setjmp(jmp_buf _Buf); +#endif /* !USE_MINGW_SETJMP_TWO_ARGS */
__declspec(noreturn) __MINGW_NOTHROW void __cdecl ms_longjmp(jmp_buf _Buf,int _Value)/* throw(...)*/; __declspec(noreturn) __MINGW_NOTHROW void __cdecl longjmp(jmp_buf _Buf,int _Value);
Modified: trunk/reactos/include/crt/stddef.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/stddef.h?rev=50... ============================================================================== --- trunk/reactos/include/crt/stddef.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/stddef.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -13,13 +13,7 @@ extern "C" { #endif
-#ifndef _CRT_ERRNO_DEFINED -#define _CRT_ERRNO_DEFINED - _CRTIMP extern int *__cdecl _errno(void); -#define errno (*_errno()) - errno_t __cdecl _set_errno(int _Value); - errno_t __cdecl _get_errno(int *_Value); -#endif +#include <errno.h>
_CRTIMP extern unsigned long __cdecl __threadid(void); #define _threadid (__threadid())
Modified: trunk/reactos/include/crt/stdlib.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/stdlib.h?rev=50... ============================================================================== --- trunk/reactos/include/crt/stdlib.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/stdlib.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -134,13 +134,7 @@ _invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler _Handler); _invalid_parameter_handler __cdecl _get_invalid_parameter_handler(void);
-#ifndef _CRT_ERRNO_DEFINED -#define _CRT_ERRNO_DEFINED - _CRTIMP extern int *__cdecl _errno(void); -#define errno (*_errno()) - errno_t __cdecl _set_errno(int _Value); - errno_t __cdecl _get_errno(int *_Value); -#endif +#include <errno.h> _CRTIMP unsigned long *__cdecl __doserrno(void); #define _doserrno (*__doserrno()) errno_t __cdecl _set_doserrno(unsigned long _Value); @@ -447,10 +441,10 @@ _CRTIMP void __cdecl _wsplitpath(const wchar_t *_FullPath,wchar_t *_Drive,wchar_t *_Dir,wchar_t *_Filename,wchar_t *_Ext); #endif
- _CRTIMP void __cdecl _beep(unsigned _Frequency,unsigned _Duration) __MINGW_ATTRIB_DEPRECATED; + _CRTIMP __MINGW_ATTRIB_DEPRECATED void __cdecl _beep(unsigned _Frequency,unsigned _Duration); /* Not to be confused with _set_error_mode (int). */ - _CRTIMP void __cdecl _seterrormode(int _Mode) __MINGW_ATTRIB_DEPRECATED; - _CRTIMP void __cdecl _sleep(unsigned long _Duration) __MINGW_ATTRIB_DEPRECATED; + _CRTIMP __MINGW_ATTRIB_DEPRECATED void __cdecl _seterrormode(int _Mode); + _CRTIMP __MINGW_ATTRIB_DEPRECATED void __cdecl _sleep(unsigned long _Duration); #endif
#ifndef NO_OLDNAMES
Modified: trunk/reactos/include/crt/string.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/string.h?rev=50... ============================================================================== --- trunk/reactos/include/crt/string.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/string.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -82,6 +82,17 @@ _CRTIMP char *_strupr_l(char *_String,_locale_t _Locale); _CRTIMP size_t __cdecl strxfrm(char *_Dst,const char *_Src,size_t _MaxCount); _CRTIMP size_t __cdecl _strxfrm_l(char *_Dst,const char *_Src,size_t _MaxCount,_locale_t _Locale); +#if __STDC_WANT_SECURE_LIB__ + _CRTIMP errno_t __cdecl _strset_s(char *_Dst,size_t _DstSize,int _Value); + _CRTIMP errno_t __cdecl _strerror_s(char *_Buf,size_t _SizeInBytes,const char *_ErrMsg); + _CRTIMP errno_t __cdecl _strlwr_s(char *_Str,size_t _Size); + _CRTIMP errno_t __cdecl _strlwr_s_l(char *_Str,size_t _Size,_locale_t _Locale); + _CRTIMP errno_t __cdecl _strnset_s(char *_Str,size_t _Size,int _Val,size_t _MaxCount); + _CRTIMP errno_t __cdecl _strupr_s(char *_Str,size_t _Size); + _CRTIMP errno_t __cdecl _strupr_s_l(char *_Str,size_t _Size,_locale_t _Locale); + _CRTIMP errno_t __cdecl strcpy_s(char *_Dst, size_t _Size, const char *_Src); + _CRTIMP errno_t __cdecl strcat_s(char *_Dst, size_t _Size, const char *_Src); +#endif
#ifndef NO_OLDNAMES _CRTIMP _CRT_NONSTDC_DEPRECATE(_strdup) char *__cdecl strdup(const char *_Src); @@ -102,27 +113,15 @@
_CRTIMP wchar_t *__cdecl _wcsdup(const wchar_t *_Str); _CRTIMP _CRT_INSECURE_DEPRECATE(wcsat_s) wchar_t *__cdecl wcscat(wchar_t *_Dest,const wchar_t *_Source); -#if __STDC_WANT_SECURE_LIB__ - _CRTIMP errno_t __cdecl wcsat_s(wchar_t * Dest, size_t SizeInWords, const wchar_t * _Source); -#endif _CRTIMP _CONST_RETURN wchar_t *__cdecl wcschr(const wchar_t *_Str,wchar_t _Ch); _CRTIMP int __cdecl wcscmp(const wchar_t *_Str1,const wchar_t *_Str2); _CRTIMP _CRT_INSECURE_DEPRECATE(wcscpy_s) wchar_t *__cdecl wcscpy(wchar_t *_Dest,const wchar_t *_Source); -#if __STDC_WANT_SECURE_LIB__ - _CRTIMP errno_t __cdecl wcscpy_s(wchar_t * Dest, size_t SizeInWords, const wchar_t * _Source); -#endif _CRTIMP size_t __cdecl wcscspn(const wchar_t *_Str,const wchar_t *_Control); _CRTIMP wchar_t *wcsncat(wchar_t *_Dest,const wchar_t *_Source,size_t _Count); _CRTIMP size_t __cdecl wcslen(const wchar_t *_Str); _CRTIMP _CRT_INSECURE_DEPRECATE(wcsnlen_s) size_t __cdecl wcsnlen(const wchar_t *_Src,size_t _MaxCount); -#if __STDC_WANT_SECURE_LIB__ - _CRTIMP errno_t __cdecl wcsnlen_s(wchar_t **_Src, size_t _MaxCount); -#endif _CRTIMP int __cdecl wcsncmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount); _CRTIMP _CRT_INSECURE_DEPRECATE(wcsncpy_s) wchar_t *wcsncpy(wchar_t *_Dest,const wchar_t *_Source,size_t _Count); -#if __STDC_WANT_SECURE_LIB__ - _CRTIMP errno_t __cdecl wcsncpy_s(wchar_t *_Dest, size_t SizeInWords, const wchar_t *_Source ,size_t _Count); -#endif _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(const wchar_t *_Str,const wchar_t *_Control); _CRTIMP _CONST_RETURN wchar_t *__cdecl wcsrchr(const wchar_t *_Str,wchar_t _Ch); _CRTIMP size_t __cdecl wcsspn(const wchar_t *_Str,const wchar_t *_Control); @@ -151,6 +150,20 @@ _CRTIMP int __cdecl _wcsncoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale); _CRTIMP int __cdecl _wcsnicoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount); _CRTIMP int __cdecl _wcsnicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale); +#if __STDC_WANT_SECURE_LIB__ + _CRTIMP errno_t __cdecl wcsat_s(wchar_t * Dest, size_t SizeInWords, const wchar_t * _Source); + _CRTIMP errno_t __cdecl wcscpy_s(wchar_t * Dest, size_t SizeInWords, const wchar_t * _Source); + _CRTIMP errno_t __cdecl wcsnlen_s(wchar_t **_Src, size_t _MaxCount); + _CRTIMP errno_t __cdecl wcsncpy_s(wchar_t *_Dest, size_t SizeInWords, const wchar_t *_Source ,size_t _Count); + _CRTIMP errno_t __cdecl _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum); + _CRTIMP errno_t __cdecl __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg); + _CRTIMP errno_t __cdecl _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount); + _CRTIMP errno_t __cdecl _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val); + _CRTIMP errno_t __cdecl _wcslwr_s(wchar_t *_Str,size_t _SizeInWords); + _CRTIMP errno_t __cdecl _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale); + _CRTIMP errno_t __cdecl _wcsupr_s(wchar_t *_Str,size_t _Size); + _CRTIMP errno_t __cdecl _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale); +#endif
#ifndef NO_OLDNAMES _CRTIMP _CRT_NONSTDC_DEPRECATE(_wcsdup) wchar_t *__cdecl wcsdup(const wchar_t *_Str); @@ -171,8 +184,6 @@ } #endif
-#include <sec_api/string_s.h> - // HACK #define strcasecmp _stricmp #define strncasecmp _strnicmp @@ -180,3 +191,4 @@ #define wcsicmp _wcsicmp
#endif +
Modified: trunk/reactos/include/crt/sys/stat.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/sys/stat.h?rev=... ============================================================================== --- trunk/reactos/include/crt/sys/stat.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/sys/stat.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -187,9 +187,9 @@ _Stat->st_gid = _Stat64.st_gid; _Stat->st_rdev = _Stat64.st_rdev; _Stat->st_size = _Stat64.st_size; - _Stat->st_atime = _Stat64.st_atime; - _Stat->st_mtime = _Stat64.st_mtime; - _Stat->st_ctime = _Stat64.st_ctime; + _Stat->st_atime = (__time32_t)_Stat64.st_atime; + _Stat->st_mtime = (__time32_t)_Stat64.st_mtime; + _Stat->st_ctime = (__time32_t)_Stat64.st_ctime; return ret; } __CRT_INLINE int __cdecl _fstat32i64(int _FileDes, struct _stat32i64 *_Stat) @@ -204,9 +204,9 @@ _Stat->st_gid = _Stat64.st_gid; _Stat->st_rdev = _Stat64.st_rdev; _Stat->st_size = _Stat64.st_size; - _Stat->st_atime = _Stat64.st_atime; - _Stat->st_mtime = _Stat64.st_mtime; - _Stat->st_ctime = _Stat64.st_ctime; + _Stat->st_atime = (__time32_t)_Stat64.st_atime; + _Stat->st_mtime = (__time32_t)_Stat64.st_mtime; + _Stat->st_ctime = (__time32_t)_Stat64.st_ctime; return ret; } #endif /* _USE_32BIT_TIME_T */
Modified: trunk/reactos/include/crt/vadefs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/vadefs.h?rev=50... ============================================================================== --- trunk/reactos/include/crt/vadefs.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/vadefs.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -81,14 +81,24 @@ #define __va_copy(d,s) __builtin_va_copy(d,s) #elif defined(_MSC_VER)
-#if defined(_M_IA64) || defined(_M_AMD64) || defined(_M_CEE) -#error Please implement me -#endif - +#if defined(_M_IX86) #define _crt_va_start(v,l) ((void)((v) = (va_list)_ADDRESSOF(l) + _INTSIZEOF(l))) #define _crt_va_arg(v,l) (*(l *)(((v) += _INTSIZEOF(l)) - _INTSIZEOF(l))) #define _crt_va_end(v) ((void)((v) = (va_list)0)) #define __va_copy(d,s) ((void)((d) = (s))) +#elif defined(_M_AMD64) +#define _PTRSIZEOF(n) ((sizeof(n) + sizeof(void*) - 1) & ~(sizeof(void*) - 1)) +#define _ISSTRUCT(t) ((sizeof(t) > sizeof(void*)) || (sizeof(t) & (sizeof(t)-1)) != 0) +#define _crt_va_start(v,l) ((void)((v) = (va_list)_ADDRESSOF(l) + _PTRSIZEOF(l))) +#define _crt_va_arg(v,t) (_ISSTRUCT(t) ? \ + (**(t**)(((v) += sizeof(void*)) - sizeof(void*))) : \ + (*(t*)(((v) += sizeof(void*)) - sizeof(void*)))) +#define _crt_va_end(v) ((void)((v) = (va_list)0)) +#define __va_copy(d,s) ((void)((d) = (s))) +#else //if defined(_M_IA64) || defined(_M_CEE) +#error Please implement me +#endif + #endif
#if !defined(va_copy) && (!defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L)
Modified: trunk/reactos/include/ndk/inline_ntcurrentteb.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/inline_ntcurren... ============================================================================== --- trunk/reactos/include/ndk/inline_ntcurrentteb.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/inline_ntcurrentteb.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -1,20 +1,10 @@ #ifndef _INLINE_NT_CURRENTTEB_H_ #define _INLINE_NT_CURRENTTEB_H_ - -#ifdef __GNUC__
#if defined(_M_IX86) FORCEINLINE struct _TEB * NtCurrentTeb(void) { - struct _TEB *ret; - - __asm__ __volatile__ ( - "movl %%fs:0x18, %0\n" - : "=r" (ret) - : /* no inputs */ - ); - - return ret; + return (struct _TEB *)__readfsdword(0x18); } #elif defined(_M_ARM)
@@ -24,63 +14,17 @@ #include <armddk.h>
#elif defined(_M_AMD64) -FORCEINLINE struct _TEB * NtCurrentTeb(VOID) +FORCEINLINE struct _TEB * NtCurrentTeb(void) { return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB, Self)); } #elif defined(_M_PPC) -extern __inline__ struct _TEB * NtCurrentTeb(void) +FORCEINLINE struct _TEB * NtCurrentTeb(void) { - return __readfsdword_winnt(0x18); + return (struct _TEB *)__readfsdword_winnt(0x18); } #else -extern __inline__ struct _TEB * NtCurrentTeb(void) -{ - return __readfsdword_winnt(0x18); -} +#error Unsupported architecture #endif
-#elif defined(__WATCOMC__) - -extern PVOID GetCurrentFiber(void); -#pragma aux GetCurrentFiber = \ - "mov eax, dword ptr fs:0x10" \ - value [eax] \ - modify [eax]; - -extern struct _TEB * NtCurrentTeb(void); -#pragma aux NtCurrentTeb = \ - "mov eax, dword ptr fs:0x18" \ - value [eax] \ - modify [eax]; - -#elif defined(_MSC_VER) - -#if (_MSC_FULL_VER >= 13012035) - -__inline PVOID GetCurrentFiber(void) { return (PVOID)(ULONG_PTR)__readfsdword(0x10); } -__inline struct _TEB * NtCurrentTeb(void) { return (struct _TEB *)(ULONG_PTR)__readfsdword(0x18); } - -#else - -static __inline PVOID GetCurrentFiber(void) -{ - PVOID p; - __asm mov eax, fs:[10h] - __asm mov [p], eax - return p; -} - -static __inline struct _TEB * NtCurrentTeb(void) -{ - struct _TEB *p; - __asm mov eax, fs:[18h] - __asm mov [p], eax - return p; -} - -#endif /* _MSC_FULL_VER */ - -#endif /* __GNUC__/__WATCOMC__/_MSC_VER */ - #endif//_INLINE_NT_CURRENTTEB_H_
Modified: trunk/reactos/include/ndk/peb_teb.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/peb_teb.h?rev=5... ============================================================================== --- trunk/reactos/include/ndk/peb_teb.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/peb_teb.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -12,7 +12,7 @@ #define PTR(x) x #endif
-#if defined(_WIN64) && !defined(EXPLICIT_32BIT) +#if (defined(_WIN64) && !defined(EXPLICIT_32BIT)) || defined(EXPLICIT_64BIT) #define GDI_HANDLE_BUFFER_SIZE 60 #else #define GDI_HANDLE_BUFFER_SIZE 34
Modified: trunk/reactos/include/psdk/rpc.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/rpc.h?rev=5065... ============================================================================== --- trunk/reactos/include/psdk/rpc.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/rpc.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -1,17 +1,11 @@
#if !defined( RPC_NO_WINDOWS_H ) && !defined( MAC ) && !defined( _MAC ) -#if defined (_OLE32_) -#ifndef RC_INVOKED -#include <stdarg.h> -#endif -#include <windef.h> -#include <winbase.h> -#else +#ifndef _INC_WINDOWS #include <windows.h> -#endif +#endif /* _INC_WINDOWS */ #endif
-#ifdef __GNUC__ +#ifndef RC_INVOKED #include <pseh/pseh2.h> #endif
Modified: trunk/reactos/include/psdk/strsafe.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/strsafe.h?rev=... ============================================================================== --- trunk/reactos/include/psdk/strsafe.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/strsafe.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -1,6 +1,7 @@ #ifndef __STRSAFE_H_ #define __STRSAFE_H_
+#include <stdio.h> #include <stdlib.h> #include <stdarg.h>
@@ -238,7 +239,11 @@ #else // !STRSAFE_LIB
/* Create inlined versions */ +#ifdef __GNUC__ #define STRSAFEAPI HRESULT static __inline__ +#else +#define STRSAFEAPI HRESULT __inline +#endif
#define STRSAFE_MAX_CXX STRSAFE_CCHtoCXX(STRSAFE_MAX_CCH)
@@ -496,7 +501,7 @@
if (SUCCEEDED(hr)) { - if ((dwFlags & STRSAFE_FILL_BEHIND_NULL) && (iResult + 1 < cchMax)) + if ((dwFlags & STRSAFE_FILL_BEHIND_NULL) && ((size_t)iResult + 1 < cchMax)) { memset(pszDest + iResult + 1, dwFlags & 0xff,
Modified: trunk/reactos/include/psdk/unknown.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/unknown.h?rev=... ============================================================================== --- trunk/reactos/include/psdk/unknown.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/unknown.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -16,8 +16,8 @@ * */
-#ifndef __unknwn_h__ -#define __unknwn_h__ +#ifndef _UNKNOWN_H_ +#define _UNKNOWN_H_
#ifdef __cplusplus extern "C" { @@ -70,5 +70,5 @@ IN POOL_TYPE PoolType );
-#endif +#endif /* _UNKNOWN_H_ */
Modified: trunk/reactos/include/psdk/wspiapi.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/wspiapi.h?rev=... ============================================================================== --- trunk/reactos/include/psdk/wspiapi.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/wspiapi.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -44,6 +44,12 @@ #define getaddrinfo WspiapiGetAddrInfo #define getnameinfo WspiapiGetNameInfo #define freeaddrinfo WspiapiFreeAddrInfo + +#if _MSC_VER +#define WSPIAPI_INLINE __inline +#else +#define WSPIAPI_INLINE static inline +#endif
typedef int (WINAPI *WSPIAPI_PGETADDRINFO)( @@ -436,12 +442,12 @@ } WSPIAPI_FUNCTION;
#define WSPIAPI_FUNCTION_ARRAY { \ - "getaddrinfo", (FARPROC) WspiapiLegacyGetAddrInfo, \ - "getnameinfo", (FARPROC) WspiapiLegacyGetNameInfo, \ - "freeaddrinfo", (FARPROC) WspiapiLegacyFreeAddrInfo, \ -} - -FORCEINLINE + {"getaddrinfo", (FARPROC) WspiapiLegacyGetAddrInfo}, \ + {"getnameinfo", (FARPROC) WspiapiLegacyGetNameInfo}, \ + {"freeaddrinfo", (FARPROC) WspiapiLegacyFreeAddrInfo} \ +} + +WSPIAPI_INLINE FARPROC WINAPI WspiapiLoad( @@ -503,7 +509,7 @@ return (rgtGlobal[wFunction].pfAddress); }
-FORCEINLINE +WSPIAPI_INLINE int WINAPI WspiapiGetAddrInfo( @@ -522,7 +528,7 @@ return iError; }
-FORCEINLINE +WSPIAPI_INLINE int WINAPI WspiapiGetNameInfo( @@ -544,7 +550,7 @@ return iError; }
-FORCEINLINE +WSPIAPI_INLINE void WINAPI WspiapiFreeAddrInfo(
Modified: trunk/reactos/include/reactos/asm.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/asm.h?rev=5... ============================================================================== --- trunk/reactos/include/reactos/asm.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/asm.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -12,6 +12,7 @@ OPTION DOTNAME
.586 +.XMM .MODEL FLAT ASSUME CS:NOTHING, DS:NOTHING, ES:NOTHING, FS:NOTHING, GS:NOTHING
@@ -73,6 +74,10 @@
.long MACRO args:VARARG dd args +ENDM + +.double MACRO args:VARARG + dq args ENDM
UNIMPLEMENTED MACRO name @@ -115,6 +120,10 @@ /* MASM compatible PUBLIC */ .macro PUBLIC symbol .global \symbol +.endm + +/* Dummy ASSUME */ +.macro ASSUME p1 p2 p3 p4 p5 p6 p7 p8 .endm
/* MASM compatible ALIGN */
Modified: trunk/reactos/include/reactos/mingw-w64/sect_attribs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/mingw-w64/s... ============================================================================== --- trunk/reactos/include/reactos/mingw-w64/sect_attribs.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/mingw-w64/sect_attribs.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -9,7 +9,7 @@ #if defined(_M_IA64) || defined(_M_AMD64) #define _ATTRIBUTES #else -#define _ATTRIBUTES shared +#define _ATTRIBUTES read #endif
/* Reference list of existing section for msvcrt. */
Modified: trunk/reactos/include/xdk/kefuncs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/kefuncs.h?rev=5... ============================================================================== --- trunk/reactos/include/xdk/kefuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/kefuncs.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -208,7 +208,7 @@ #endif
NTKERNELAPI -DECLSPEC_NORETURN +//DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx(
Modified: trunk/reactos/lib/drivers/ip/network/i386/checksum.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/ip/network/i386... ============================================================================== --- trunk/reactos/lib/drivers/ip/network/i386/checksum.S [iso-8859-1] (original) +++ trunk/reactos/lib/drivers/ip/network/i386/checksum.S [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -24,109 +24,111 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ - + /* * computes a partial checksum, e.g. for TCP/UDP fragments */
-/* +/* unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum) */ - -.text + +#include <asm.inc> + +.code .align 4 -.globl _csum_partial - +PUBLIC _csum_partial + #ifndef CONFIG_X86_USE_PPRO_CHECKSUM
- /* + /* * Experiments with Ethernet and SLIP connections show that buff * is aligned on either a 2-byte or 4-byte boundary. We get at * least a twofold speedup on 486 and Pentium if it is 4-byte aligned. * Fortunately, it is easy to convert 2-byte alignment to 4-byte * alignment for the unrolled loop. - */ -_csum_partial: - pushl %esi - pushl %ebx - movl 20(%esp),%eax # Function arg: unsigned int sum - movl 16(%esp),%ecx # Function arg: int len - movl 12(%esp),%esi # Function arg: unsigned char *buff - testl $3, %esi # Check alignment. - jz 2f # Jump if alignment is ok. - testl $1, %esi # Check alignment. - jz 10f # Jump if alignment is boundary of 2bytes. + */ +_csum_partial: + push esi + push ebx + mov eax, [esp + 20] // Function arg: unsigned int sum + mov ecx, [esp + 16] // Function arg: int len + mov esi, [esp + 12] // Function arg: unsigned char *buff + test esi, 3 // Check alignment. + jz m2 // Jump if alignment is ok. + test esi, 1 // Check alignment. + jz l10 // Jump if alignment is boundary of 2bytes.
// buf is odd - dec %ecx - jl 8f - movzbl (%esi), %ebx - adcl %ebx, %eax - roll $8, %eax - inc %esi - testl $2, %esi - jz 2f -10: - subl $2, %ecx # Alignment uses up two bytes. - jae 1f # Jump if we had at least two bytes. - addl $2, %ecx # ecx was < 2. Deal with it. - jmp 4f -1: movw (%esi), %bx - addl $2, %esi - addw %bx, %ax - adcl $0, %eax -2: - movl %ecx, %edx - shrl $5, %ecx - jz 2f - testl %esi, %esi -1: movl (%esi), %ebx - adcl %ebx, %eax - movl 4(%esi), %ebx - adcl %ebx, %eax - movl 8(%esi), %ebx - adcl %ebx, %eax - movl 12(%esi), %ebx - adcl %ebx, %eax - movl 16(%esi), %ebx - adcl %ebx, %eax - movl 20(%esi), %ebx - adcl %ebx, %eax - movl 24(%esi), %ebx - adcl %ebx, %eax - movl 28(%esi), %ebx - adcl %ebx, %eax - lea 32(%esi), %esi - dec %ecx - jne 1b - adcl $0, %eax -2: movl %edx, %ecx - andl $0x1c, %edx - je 4f - shrl $2, %edx # This clears CF -3: adcl (%esi), %eax - lea 4(%esi), %esi - dec %edx - jne 3b - adcl $0, %eax -4: andl $3, %ecx - jz 7f - cmpl $2, %ecx - jb 5f - movw (%esi),%cx - leal 2(%esi),%esi - je 6f - shll $16,%ecx -5: movb (%esi),%cl -6: addl %ecx,%eax - adcl $0, %eax -7: - testl $1, 12(%esp) - jz 8f - roll $8, %eax -8: - popl %ebx - popl %esi + dec ecx + jl l8 + movzx ebx, byte ptr [esi] + adc eax, ebx + rol eax, 8 + inc esi + test esi, 2 + jz m2 +l10: + sub ecx, 2 // Alignment uses up two bytes. + jae m1 // Jump if we had at least two bytes. + add ecx, 2 // ecx was < 2. Deal with it. + jmp l4 +m1: mov bx, [esi] + add esi, 2 + add ax, bx + adc eax, 0 +m2: + mov edx, ecx + shr ecx, 5 + jz l2 + test esi, esi +l1: mov ebx, [esi] + adc eax, ebx + mov ebx, [esi + 4] + adc eax, ebx + mov ebx, [esi + 8] + adc eax, ebx + mov ebx, [esi + 12] + adc eax, ebx + mov ebx, [esi + 16] + adc eax, ebx + mov ebx, [esi + 20] + adc eax, ebx + mov ebx, [esi + 24] + adc eax, ebx + mov ebx, [esi + 28] + adc eax, ebx + lea esi, [esi + 32] + dec ecx + jne l1 + adc eax, 0 +l2: mov ecx, edx + and edx, HEX(1c) + je l4 + shr edx, 2 // This clears CF +l3: adc eax, [esi] + lea esi, [esi + 4] + dec edx + jne l3 + adc eax, 0 +l4: and ecx, 3 + jz l7 + cmp ecx, 2 + jb l5 + mov cx, [esi] + lea esi, [esi + 2] + je l6 + shl ecx, 16 +l5: mov cl, [esi] +l6: add eax, ecx + adc eax, 0 +l7: + test dword ptr [esp + 12], 1 + jz l8 + rol eax, 8 +l8: + pop ebx + pop esi ret
#else @@ -134,116 +136,118 @@ /* Version for PentiumII/PPro */
csum_partial: - pushl %esi - pushl %ebx - movl 20(%esp),%eax # Function arg: unsigned int sum - movl 16(%esp),%ecx # Function arg: int len - movl 12(%esp),%esi # Function arg: const unsigned char *buf - - testl $3, %esi - jnz 25f -10: - movl %ecx, %edx - movl %ecx, %ebx - andl $0x7c, %ebx - shrl $7, %ecx - addl %ebx,%esi - shrl $2, %ebx - negl %ebx - lea 45f(%ebx,%ebx,2), %ebx - testl %esi, %esi - jmp *%ebx - - # Handle 2-byte-aligned regions -20: addw (%esi), %ax - lea 2(%esi), %esi - adcl $0, %eax - jmp 10b -25: - testl $1, %esi - jz 30f - # buf is odd - dec %ecx - jl 90f - movzbl (%esi), %ebx - addl %ebx, %eax - adcl $0, %eax - roll $8, %eax - inc %esi - testl $2, %esi - jz 10b - -30: subl $2, %ecx - ja 20b - je 32f - addl $2, %ecx - jz 80f - movzbl (%esi),%ebx # csumming 1 byte, 2-aligned - addl %ebx, %eax - adcl $0, %eax - jmp 80f -32: - addw (%esi), %ax # csumming 2 bytes, 2-aligned - adcl $0, %eax - jmp 80f - -40: - addl -128(%esi), %eax - adcl -124(%esi), %eax - adcl -120(%esi), %eax - adcl -116(%esi), %eax - adcl -112(%esi), %eax - adcl -108(%esi), %eax - adcl -104(%esi), %eax - adcl -100(%esi), %eax - adcl -96(%esi), %eax - adcl -92(%esi), %eax - adcl -88(%esi), %eax - adcl -84(%esi), %eax - adcl -80(%esi), %eax - adcl -76(%esi), %eax - adcl -72(%esi), %eax - adcl -68(%esi), %eax - adcl -64(%esi), %eax - adcl -60(%esi), %eax - adcl -56(%esi), %eax - adcl -52(%esi), %eax - adcl -48(%esi), %eax - adcl -44(%esi), %eax - adcl -40(%esi), %eax - adcl -36(%esi), %eax - adcl -32(%esi), %eax - adcl -28(%esi), %eax - adcl -24(%esi), %eax - adcl -20(%esi), %eax - adcl -16(%esi), %eax - adcl -12(%esi), %eax - adcl -8(%esi), %eax - adcl -4(%esi), %eax -45: - lea 128(%esi), %esi - adcl $0, %eax - dec %ecx - jge 40b - movl %edx, %ecx -50: andl $3, %ecx - jz 80f - - # Handle the last 1-3 bytes without jumping - notl %ecx # 1->2, 2->1, 3->0, higher bits are masked - movl $0xffffff,%ebx # by the shll and shrl instructions - shll $3,%ecx - shrl %cl,%ebx - andl -128(%esi),%ebx # esi is 4-aligned so should be ok - addl %ebx,%eax - adcl $0,%eax -80: - testl $1, 12(%esp) - jz 90f - roll $8, %eax -90: - popl %ebx - popl %esi + push esi + push ebx + mov eax, [esp + 20] # Function arg: unsigned int sum + mov ecx, [esp + 16] # Function arg: int len + mov esi, [esp + 12] # Function arg: const unsigned char *buf + + test esi, 3 + jnz l25f +l10: + mov edx, ecx + mov ebx, ecx + and ebx, HEX(7c) + shr ecx, 7 + add esi, ebx + shr ebx, 2 + neg ebx + lea ebx, l45[ebx + ebx * 2] + test esi, esi + jmp dword ptr [ebx] + + // Handle 2-byte-aligned regions +l20: add ax, [esi] + lea esi, [esi + 2] + adc eax, 0 + jmp l10b +l25: + test esi, 1 + jz l30f + // buf is odd + dec ecx + jl l90 + movzb ebx, [esi] + add eax, ebx + adc eax, 0 + rol eax, 8 + inc esi + test esi, 2 + jz l10b + +l30: sub ecx, 2 + ja l20 + je l32 + add ecx, 2 + jz l80 + movzb ebx, [esi] // csumming 1 byte, 2-aligned + add eax, ebx + adc eax, 0 + jmp l80 +l32: + add ax, [esi] // csumming 2 bytes, 2-aligned + adc eax, 0 + jmp l80 + +l40: + add eax, [esi -128] + adc eax, [esi -124] + adc eax, [esi -120] + adc eax, [esi -116] + adc eax, [esi -112] + adc eax, [esi -108] + adc eax, [esi -104] + adc eax, [esi -100] + adc eax, [esi -96] + adc eax, [esi -92] + adc eax, [esi -88] + adc eax, [esi -84] + adc eax, [esi -80] + adc eax, [esi -76] + adc eax, [esi -72] + adc eax, [esi -68] + adc eax, [esi -64] + adc eax, [esi -60] + adc eax, [esi -56] + adc eax, [esi -52] + adc eax, [esi -48] + adc eax, [esi -44] + adc eax, [esi -40] + adc eax, [esi -36] + adc eax, [esi -32] + adc eax, [esi -28] + adc eax, [esi -24] + adc eax, [esi -20] + adc eax, [esi -16] + adc eax, [esi -12] + adc eax, [esi -8] + adc eax, [esi -4] +l45: + lea esi, [esi + 128] + adc eax, 0 + dec ecx + jge l40 + mov ecx, edx +l50: and ecx, 3 + jz l80 + + // Handle the last 1-3 bytes without jumping + not ecx // 1->2, 2->1, 3->0, higher bits are masked + mov ebx, HEX(ffffff) // by the shll and shrl instructions + shl ecx, 3 + shr ebx, cl + and ebx, [esi -128] // esi is 4-aligned so should be ok + add eax, ebx + adc eax, 0 +l80: + test dword ptr [esp + 12], 1 + jz l90 + rol eax, 8 +l90: + pop ebx + pop esi ret - + #endif + +END
Modified: trunk/reactos/ntoskrnl/include/internal/i386/intrin_i.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i... ============================================================================== --- trunk/reactos/ntoskrnl/include/internal/i386/intrin_i.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/i386/intrin_i.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -144,6 +144,32 @@ sgdt [eax] } } + +FORCEINLINE +VOID +__fxsave(OUT PFX_SAVE_AREA SaveArea) +{ + __asm mov eax, SaveArea + __asm fxsave [eax] +} + +FORCEINLINE +VOID +__fxrstor(IN PFX_SAVE_AREA SaveArea) +{ + __asm mov eax, SaveArea + __asm fxrstor [eax] +} + +FORCEINLINE +VOID +__fnsave(OUT PFLOATING_SAVE_AREA SaveArea) +{ + __asm mov eax, SaveArea + __asm fnsave [eax] + __asm wait; +} + #define Ke386GetGlobalDescriptorTable __sgdt
FORCEINLINE @@ -267,6 +293,28 @@ __asm mov ax, Value; __asm mov gs, ax; } + +extern ULONG KeI386FxsrPresent; + +FORCEINLINE +VOID +Ke386SaveFpuState(IN PVOID SaveArea) +{ + if (KeI386FxsrPresent) + { + __fxsave(SaveArea); + } + else + { + __fnsave(SaveArea); + } +} + +#define Ke386FnSave __fnsave +#define Ke386FxSave __fxsave +// The name suggest, that the original author didn't understand what frstor means +#define Ke386FxStore __fxrstor +
#else #error Unknown compiler for inline assembler
Modified: trunk/reactos/ntoskrnl/ke/i386/cpu.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/cpu.c?rev=... ============================================================================== --- trunk/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -109,7 +109,13 @@ #define CX86_CCR1 0xc1
/* NSC/Cyrix CPU indexed register access macros */ -#define getCx86(reg) ({ WRITE_PORT_UCHAR((PUCHAR)(ULONG_PTR)0x22,(reg)); READ_PORT_UCHAR((PUCHAR)(ULONG_PTR)0x23); }) +static __inline +ULONG +getCx86(UCHAR reg) +{ + WRITE_PORT_UCHAR((PUCHAR)(ULONG_PTR)0x22, reg); + return READ_PORT_UCHAR((PUCHAR)(ULONG_PTR)0x23); +}
#define setCx86(reg, data) do { \ WRITE_PORT_UCHAR((PUCHAR)(ULONG_PTR)0x22,(reg)); \
Modified: trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/i386/init.... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -18,15 +18,16 @@ /* GLOBALS ********************************************************************/
/* Template PTE and PDE for a kernel page */ -MMPTE ValidKernelPde = {.u.Hard.Valid = 1, .u.Hard.Write = 1, .u.Hard.Dirty = 1, .u.Hard.Accessed = 1}; -MMPTE ValidKernelPte = {.u.Hard.Valid = 1, .u.Hard.Write = 1, .u.Hard.Dirty = 1, .u.Hard.Accessed = 1}; +MMPTE ValidKernelPde = {{PTE_VALID|PTE_READWRITE|PTE_DIRTY|PTE_ACCESSED}}; +MMPTE ValidKernelPte = {{PTE_VALID|PTE_READWRITE|PTE_DIRTY|PTE_ACCESSED}};
/* Template PDE for a demand-zero page */ -MMPDE DemandZeroPde = {.u.Long = (MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS)}; -MMPTE DemandZeroPte = {.u.Long = (MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS)}; +MMPDE DemandZeroPde = {{MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS}}; +MMPTE DemandZeroPte = {{MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS}};
/* Template PTE for prototype page */ -MMPTE PrototypePte = {.u.Long = (MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS) | PTE_PROTOTYPE | (MI_PTE_LOOKUP_NEEDED << PAGE_SHIFT)}; +MMPTE PrototypePte = {{(MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS) | + PTE_PROTOTYPE | (MI_PTE_LOOKUP_NEEDED << PAGE_SHIFT)}};
/* PRIVATE FUNCTIONS **********************************************************/
Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/miarm.h?re... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -128,6 +128,14 @@ #define PTE_EXECUTE_READWRITE 0x2 // Not worrying about NX yet #define PTE_EXECUTE_WRITECOPY 0x200 #define PTE_PROTOTYPE 0x400 + +// +// State Flags +// +#define PTE_VALID 0x1 +#define PTE_ACCESSED 0x20 +#define PTE_DIRTY 0x40 + // // Cache flags //
Modified: trunk/reactos/tools/unicode/string.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/unicode/string.c?rev=... ============================================================================== --- trunk/reactos/tools/unicode/string.c [iso-8859-1] (original) +++ trunk/reactos/tools/unicode/string.c [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -21,7 +21,6 @@ #include <assert.h> #include <limits.h> #include <stdio.h> -#include <string.h>
#define WINE_UNICODE_INLINE /* nothing */ #include "wine/unicode.h" @@ -465,7 +464,7 @@ *fmta = '\0'; if (*iter == 'a' || *iter == 'A' || *iter == 'e' || *iter == 'E' || - *iter == 'f' || *iter == 'F' || + *iter == 'f' || *iter == 'F' || *iter == 'g' || *iter == 'G') sprintf(bufaiter, fmtbufa, va_arg(valist, double)); else
Modified: trunk/reactos/tools/unicode/wine/unicode.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/unicode/wine/unicode.... ============================================================================== --- trunk/reactos/tools/unicode/wine/unicode.h [iso-8859-1] (original) +++ trunk/reactos/tools/unicode/wine/unicode.h [iso-8859-1] Fri Feb 11 13:48:41 2011 @@ -18,10 +18,11 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#ifndef __WINE_UNICODE_H -#define __WINE_UNICODE_H +#ifndef __WINE_WINE_UNICODE_H +#define __WINE_WINE_UNICODE_H
#include <stdarg.h> +#include <string.h> #include <host/typedefs.h>
// Definitions copied from <winnls.h> @@ -44,12 +45,24 @@ #define WC_NO_BEST_FIT_CHARS 1024 #define WC_ERR_INVALID_CHARS 0x0080
+#ifdef __WINE_WINE_TEST_H +#error This file should not be used in Wine tests +#endif + +#ifdef __cplusplus +extern "C" { +#endif + #ifndef WINE_UNICODE_API -#define WINE_UNICODE_API DECLSPEC_IMPORT +# if defined(_MSC_VER) || defined(__MINGW32__) +# define WINE_UNICODE_API DECLSPEC_IMPORT +# else +# define WINE_UNICODE_API +# endif #endif
#ifndef WINE_UNICODE_INLINE -#define WINE_UNICODE_INLINE extern inline +#define WINE_UNICODE_INLINE static inline #endif
/* code page info common to SBCS and DBCS */ @@ -117,20 +130,17 @@ extern int vsprintfW( WCHAR *str, const WCHAR *format, va_list valist ); extern int vsnprintfW( WCHAR *str, size_t len, const WCHAR *format, va_list valist );
-WINE_UNICODE_INLINE int wine_is_dbcs_leadbyte( const union cptable *table, unsigned char ch ); WINE_UNICODE_INLINE int wine_is_dbcs_leadbyte( const union cptable *table, unsigned char ch ) { return (table->info.char_size == 2) && (table->dbcs.cp2uni_leadbytes[ch]); }
-WINE_UNICODE_INLINE WCHAR tolowerW( WCHAR ch ); WINE_UNICODE_INLINE WCHAR tolowerW( WCHAR ch ) { extern WINE_UNICODE_API const WCHAR wine_casemap_lower[]; return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; }
-WINE_UNICODE_INLINE WCHAR toupperW( WCHAR ch ); WINE_UNICODE_INLINE WCHAR toupperW( WCHAR ch ) { extern WINE_UNICODE_API const WCHAR wine_casemap_upper[]; @@ -139,74 +149,62 @@
/* the character type contains the C1_* flags in the low 12 bits */ /* and the C2_* type in the high 4 bits */ -WINE_UNICODE_INLINE unsigned short get_char_typeW( WCHAR ch ); WINE_UNICODE_INLINE unsigned short get_char_typeW( WCHAR ch ) { extern WINE_UNICODE_API const unsigned short wine_wctype_table[]; return wine_wctype_table[wine_wctype_table[ch >> 8] + (ch & 0xff)]; }
-WINE_UNICODE_INLINE int iscntrlW( WCHAR wc ); WINE_UNICODE_INLINE int iscntrlW( WCHAR wc ) { return get_char_typeW(wc) & C1_CNTRL; }
-WINE_UNICODE_INLINE int ispunctW( WCHAR wc ); WINE_UNICODE_INLINE int ispunctW( WCHAR wc ) { return get_char_typeW(wc) & C1_PUNCT; }
-WINE_UNICODE_INLINE int isspaceW( WCHAR wc ); WINE_UNICODE_INLINE int isspaceW( WCHAR wc ) { return get_char_typeW(wc) & C1_SPACE; }
-WINE_UNICODE_INLINE int isdigitW( WCHAR wc ); WINE_UNICODE_INLINE int isdigitW( WCHAR wc ) { return get_char_typeW(wc) & C1_DIGIT; }
-WINE_UNICODE_INLINE int isxdigitW( WCHAR wc ); WINE_UNICODE_INLINE int isxdigitW( WCHAR wc ) { return get_char_typeW(wc) & C1_XDIGIT; }
-WINE_UNICODE_INLINE int islowerW( WCHAR wc ); WINE_UNICODE_INLINE int islowerW( WCHAR wc ) { return get_char_typeW(wc) & C1_LOWER; }
-WINE_UNICODE_INLINE int isupperW( WCHAR wc ); WINE_UNICODE_INLINE int isupperW( WCHAR wc ) { return get_char_typeW(wc) & C1_UPPER; }
-WINE_UNICODE_INLINE int isalnumW( WCHAR wc ); WINE_UNICODE_INLINE int isalnumW( WCHAR wc ) { return get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER); }
-WINE_UNICODE_INLINE int isalphaW( WCHAR wc ); WINE_UNICODE_INLINE int isalphaW( WCHAR wc ) { return get_char_typeW(wc) & (C1_ALPHA|C1_LOWER|C1_UPPER); }
-WINE_UNICODE_INLINE int isgraphW( WCHAR wc ); WINE_UNICODE_INLINE int isgraphW( WCHAR wc ) { return get_char_typeW(wc) & (C1_ALPHA|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER); }
-WINE_UNICODE_INLINE int isprintW( WCHAR wc ); WINE_UNICODE_INLINE int isprintW( WCHAR wc ) { return get_char_typeW(wc) & (C1_ALPHA|C1_BLANK|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER); @@ -214,15 +212,13 @@
/* some useful string manipulation routines */
-WINE_UNICODE_INLINE unsigned int strlenW( const WCHAR *str ); WINE_UNICODE_INLINE unsigned int strlenW( const WCHAR *str ) { const WCHAR *s = str; while (*s) s++; - return s - str; -} - -WINE_UNICODE_INLINE WCHAR *strcpyW( WCHAR *dst, const WCHAR *src ); + return (unsigned int)(s - str); +} + WINE_UNICODE_INLINE WCHAR *strcpyW( WCHAR *dst, const WCHAR *src ) { WCHAR *p = dst; @@ -233,14 +229,12 @@ /* strncpy doesn't do what you think, don't use it */ #define strncpyW(d,s,n) error do_not_use_strncpyW_use_lstrcpynW_or_memcpy_instead
-WINE_UNICODE_INLINE int strcmpW( const WCHAR *str1, const WCHAR *str2 ); WINE_UNICODE_INLINE int strcmpW( const WCHAR *str1, const WCHAR *str2 ) { while (*str1 && (*str1 == *str2)) { str1++; str2++; } return *str1 - *str2; }
-WINE_UNICODE_INLINE int strncmpW( const WCHAR *str1, const WCHAR *str2, int n ); WINE_UNICODE_INLINE int strncmpW( const WCHAR *str1, const WCHAR *str2, int n ) { if (n <= 0) return 0; @@ -248,21 +242,18 @@ return *str1 - *str2; }
-WINE_UNICODE_INLINE WCHAR *strcatW( WCHAR *dst, const WCHAR *src ); WINE_UNICODE_INLINE WCHAR *strcatW( WCHAR *dst, const WCHAR *src ) { strcpyW( dst + strlenW(dst), src ); return dst; }
-WINE_UNICODE_INLINE WCHAR *strchrW( const WCHAR *str, WCHAR ch ); WINE_UNICODE_INLINE WCHAR *strchrW( const WCHAR *str, WCHAR ch ) { do { if (*str == ch) return (WCHAR *)(ULONG_PTR)str; } while (*str++); return NULL; }
-WINE_UNICODE_INLINE WCHAR *strrchrW( const WCHAR *str, WCHAR ch ); WINE_UNICODE_INLINE WCHAR *strrchrW( const WCHAR *str, WCHAR ch ) { WCHAR *ret = NULL; @@ -270,14 +261,12 @@ return ret; }
-WINE_UNICODE_INLINE WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept ); WINE_UNICODE_INLINE WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept ) { for ( ; *str; str++) if (strchrW( accept, *str )) return (WCHAR *)(ULONG_PTR)str; return NULL; }
-WINE_UNICODE_INLINE size_t strspnW( const WCHAR *str, const WCHAR *accept ); WINE_UNICODE_INLINE size_t strspnW( const WCHAR *str, const WCHAR *accept ) { const WCHAR *ptr; @@ -285,7 +274,6 @@ return ptr - str; }
-WINE_UNICODE_INLINE size_t strcspnW( const WCHAR *str, const WCHAR *reject ); WINE_UNICODE_INLINE size_t strcspnW( const WCHAR *str, const WCHAR *reject ) { const WCHAR *ptr; @@ -293,7 +281,6 @@ return ptr - str; }
-WINE_UNICODE_INLINE WCHAR *strlwrW( WCHAR *str ); WINE_UNICODE_INLINE WCHAR *strlwrW( WCHAR *str ) { WCHAR *ret = str; @@ -301,7 +288,6 @@ return ret; }
-WINE_UNICODE_INLINE WCHAR *struprW( WCHAR *str ); WINE_UNICODE_INLINE WCHAR *struprW( WCHAR *str ) { WCHAR *ret = str; @@ -309,7 +295,6 @@ return ret; }
-WINE_UNICODE_INLINE WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n ); WINE_UNICODE_INLINE WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n ) { const WCHAR *end; @@ -317,7 +302,6 @@ return NULL; }
-WINE_UNICODE_INLINE WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n ); WINE_UNICODE_INLINE WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n ) { const WCHAR *end; @@ -326,13 +310,11 @@ return ret; }
-WINE_UNICODE_INLINE long int atolW( const WCHAR *str ); WINE_UNICODE_INLINE long int atolW( const WCHAR *str ) { return strtolW( str, (WCHAR **)0, 10 ); }
-WINE_UNICODE_INLINE int atoiW( const WCHAR *str ); WINE_UNICODE_INLINE int atoiW( const WCHAR *str ) { return (int)atolW( str ); @@ -340,4 +322,8 @@
#undef WINE_UNICODE_INLINE
-#endif /* __WINE_UNICODE_H */ +#ifdef __cplusplus +} +#endif + +#endif /* __WINE_WINE_UNICODE_H */