Author: tkreuzer Date: Tue Nov 2 00:06:33 2010 New Revision: 49421
URL: http://svn.reactos.org/svn/reactos?rev=49421&view=rev Log: [CRT] - Make all x86assembly ML compatible - Remove memcpy, it was duplicated from memmove, copy the label instead - Guard some code against compilation on msvc, as these functions are intrinsics on MSVC and cannot be implemented - Fix some x64 assembly (don't modify stack below rsp)
Removed: branches/cmake-bringup/lib/sdk/crt/mem/i386/memcpy_asm.s Modified: branches/cmake-bringup/lib/sdk/crt/CMakeLists.txt branches/cmake-bringup/lib/sdk/crt/except/i386/chkstk_asm.s branches/cmake-bringup/lib/sdk/crt/except/i386/seh.s branches/cmake-bringup/lib/sdk/crt/math/abs.c branches/cmake-bringup/lib/sdk/crt/math/amd64/ceilf.S branches/cmake-bringup/lib/sdk/crt/math/amd64/floorf.S branches/cmake-bringup/lib/sdk/crt/math/i386/alldiv_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/alldvrm_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/allmul_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/allrem_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/allshl_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/allshr_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/atan_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/aulldiv_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/aulldvrm_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/aullrem_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/aullshr_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/ceil_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/ceilf.S branches/cmake-bringup/lib/sdk/crt/math/i386/cos_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/fabs_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/floor_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/floorf.S branches/cmake-bringup/lib/sdk/crt/math/i386/ftol_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/log10_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/log_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/pow_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/sin_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/sqrt_asm.s branches/cmake-bringup/lib/sdk/crt/math/i386/tan_asm.s branches/cmake-bringup/lib/sdk/crt/math/labs.c branches/cmake-bringup/lib/sdk/crt/mem/i386/memchr_asm.s branches/cmake-bringup/lib/sdk/crt/mem/i386/memmove_asm.s branches/cmake-bringup/lib/sdk/crt/mem/i386/memset_asm.s branches/cmake-bringup/lib/sdk/crt/mem/memcmp.c branches/cmake-bringup/lib/sdk/crt/setjmp/i386/setjmp.s branches/cmake-bringup/lib/sdk/crt/string/i386/tchar.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcscat.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcschr.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcscmp.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcscpy.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcslen.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncat.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncmp.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncpy.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcsnlen.h branches/cmake-bringup/lib/sdk/crt/string/i386/tcsrchr.h branches/cmake-bringup/lib/sdk/crt/string/strset.c
Modified: branches/cmake-bringup/lib/sdk/crt/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/CMakeL... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/CMakeLists.txt [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/CMakeLists.txt [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -335,7 +335,6 @@ math/i386/ldexp.c math/i386/sqrtf.c mem/i386/memchr_asm.s - mem/i386/memcpy_asm.s mem/i386/memmove_asm.s mem/i386/memset_asm.s string/i386/strcat_asm.s @@ -516,7 +515,6 @@ if(ARCH MATCHES i386) list(APPEND LIBCNTPR_SOURCE mem/i386/memchr_asm.s - mem/i386/memcpy_asm.s mem/i386/memmove_asm.s mem/i386/memset_asm.s string/i386/strcat_asm.s
Modified: branches/cmake-bringup/lib/sdk/crt/except/i386/chkstk_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/except... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/except/i386/chkstk_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/except/i386/chkstk_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -7,8 +7,13 @@ * PROGRAMER: KJK::Hyperion noog@libero.it */
-.globl __chkstk -.globl __alloca_probe +#include <reactos/asm.h> +#include <ndk/asm.h> +#define PAGE_SIZE 4096 + +PUBLIC __chkstk +PUBLIC __alloca_probe +.code
/* _chkstk() is called by all stack allocations of more than 4 KB. It grows the @@ -18,49 +23,50 @@ __chkstk: __alloca_probe:
-/* EAX = size to be allocated */ -/* save the ECX register */ - pushl %ecx + /* EAX = size to be allocated */ + /* save the ECX register */ + push ecx
-/* ECX = top of the previous stack frame */ - leal 8(%esp), %ecx + /* ECX = top of the previous stack frame */ + lea eax, [esp + 8]
-/* probe the desired memory, page by page */ - cmpl $0x1000, %eax - jge .l_MoreThanAPage - jmp .l_LessThanAPage + /* probe the desired memory, page by page */ + cmp eax, PAGE_SIZE + jge .l_MoreThanAPage + jmp .l_LessThanAPage
.l_MoreThanAPage:
-/* raise the top of the stack by a page and probe */ - subl $0x1000, %ecx - testl %eax, 0(%ecx) + /* raise the top of the stack by a page and probe */ + sub ecx, PAGE_SIZE + test [ecx], eax
-/* loop if still more than a page must be probed */ - subl $0x1000, %eax - cmpl $0x1000, %eax - jge .l_MoreThanAPage + /* loop if still more than a page must be probed */ + sub eax, PAGE_SIZE + cmp eax, PAGE_SIZE + jge .l_MoreThanAPage
.l_LessThanAPage:
-/* raise the top of the stack by EAX bytes (size % 4096) and probe */ - subl %eax, %ecx - testl %eax, 0(%ecx) + /* raise the top of the stack by EAX bytes (size % 4096) and probe */ + sub ecx, eax + test [ecx], eax
-/* EAX = top of the stack */ - movl %esp, %eax + /* EAX = top of the stack */ + mov eax, esp
-/* allocate the memory */ - movl %ecx, %esp + /* allocate the memory */ + mov esp, ecx
-/* restore ECX */ - movl 0(%eax), %ecx + /* restore ECX */ + mov ecx, [eax]
-/* restore the return address */ - movl 4(%eax), %eax - pushl %eax + /* restore the return address */ + mov eax, [eax + 4] + push eax
-/* return */ - ret + /* return */ + ret
/* EOF */ +END
Modified: branches/cmake-bringup/lib/sdk/crt/except/i386/seh.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/except... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/except/i386/seh.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/except/i386/seh.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -8,24 +8,26 @@
/* INCLUDES ******************************************************************/
+#include <reactos/asm.h> #include <ndk/asm.h> -.intel_syntax noprefix
#define DISPOSITION_DISMISS 0 #define DISPOSITION_CONTINUE_SEARCH 1 #define DISPOSITION_COLLIDED_UNWIND 3
+EXTERN _RtlUnwind@16:PROC + /* GLOBALS *******************************************************************/
-.globl __global_unwind2 -.globl __local_unwind2 -.globl __abnormal_termination -.globl __except_handler2 -.globl __except_handler3 +PUBLIC __global_unwind2 +PUBLIC __local_unwind2 +PUBLIC __abnormal_termination +PUBLIC __except_handler2 +PUBLIC __except_handler3
/* FUNCTIONS *****************************************************************/
-.func unwind_handler +.code _unwind_handler:
/* Check if we were unwinding and continue search if not */ @@ -56,9 +58,8 @@
unwind_handler_return: ret -.endfunc - -.func _global_unwind2 + + __global_unwind2:
/* Create stack and save all registers */ @@ -85,9 +86,8 @@ mov esp, ebp pop ebp ret -.endfunc - -.func _abnormal_termination + + __abnormal_termination:
/* Assume false */ @@ -112,9 +112,8 @@ /* Return */ ab_return: ret -.endfunc - -.func _local_unwind2 + + __local_unwind2:
/* Save volatiles */ @@ -175,9 +174,8 @@ pop esi pop ebx ret -.endfunc - -.func _except_handler2 + + __except_handler2:
/* Setup stack and save volatiles */ @@ -256,7 +254,7 @@ mov [ebx+12], eax
/* Call except handler */ - call [edi+ecx*4+8] + call dword ptr [edi+ecx*4+8]
except_continue2: /* Reload try level and except again */ @@ -297,9 +295,8 @@ mov esp, ebp pop ebp ret -.endfunc - -.func _except_handler3 + + __except_handler3:
/* Setup stack and save volatiles */ @@ -437,4 +434,5 @@ mov esp, ebp pop ebp ret -.endfunc + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/abs.c URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/a... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/abs.c [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/abs.c [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -1,5 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
+#ifndef _MSC_VER /* * @implemented */ @@ -8,3 +9,4 @@ { return j<0 ? -j : j; } +#endif
Modified: branches/cmake-bringup/lib/sdk/crt/math/amd64/ceilf.S URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/a... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/amd64/ceilf.S [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/amd64/ceilf.S [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -17,24 +17,28 @@
PUBLIC ceilf ceilf: + sub rsp, 16 + /* Put parameter on the stack */ - movss [rsp - 0x10], xmm0 - fld dword ptr [rsp] + movss [rsp], xmm0 + fld dword ptr [rsp]
/* Change fpu control word to round up */ - fstcw [rsp - 0x10] - mov eax, [rsp - 0x10] - or eax, 0x00800 - and eax, 0x0fbff - mov [rsp - 0x08], eax - fldcw [rsp - 0x08] + fstcw [rsp + 8] + mov eax, [rsp + 8] + or eax, 0x00800 + and eax, 0x0fbff + mov [rsp + 12], eax + fldcw [rsp + 12]
/* Round to integer */ frndint
/* Restore fpu control word */ - fldcw [rsp - 0x10] + fldcw [rsp + 8]
- fstp dword ptr [rsp - 0x10] - movss xmm0, [rsp - 0x10] + fstp dword ptr [rsp] + movss xmm0, [rsp] + + add rsp, 16 ret
Modified: branches/cmake-bringup/lib/sdk/crt/math/amd64/floorf.S URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/a... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/amd64/floorf.S [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/amd64/floorf.S [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -17,24 +17,29 @@
PUBLIC floorf floorf: + sub rsp, 16 + /* Put parameter on the stack */ - movss [rsp - 0x10], xmm0 + movss [rsp], xmm0 fld dword ptr [rsp]
/* Change fpu control word to round down */ - fstcw [rsp - 0x10] - mov eax, [rsp - 0x10] + fstcw [rsp] + mov eax, [rsp] or eax, 0x00400 and eax, 0x0f7ff - mov [rsp - 0x08], eax - fldcw [rsp - 0x08] + mov [rsp + 8], eax + fldcw [rsp + 8]
/* Round to integer */ frndint
/* Restore fpu control word */ - fldcw [rsp - 0x10] + fldcw [rsp]
- fstp dword ptr [rsp - 0x10] - movss xmm0, [rsp - 0x10] + fstp dword ptr [rsp] + movss xmm0, [rsp] + add rsp, 16 ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/alldiv_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/alldiv_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/alldiv_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,18 +33,22 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - - .globl __alldiv - .globl __fltused - + +#include <reactos/asm.h> + +PUBLIC __alldiv +PUBLIC __fltused + /* DATA ********************************************************************/ +.data +ASSUME CS:NOTHING, DS:NOTHING, ES:NOTHING, FS:NOTHING, GS:NOTHING
__fltused: - .long 0x9875 - -.intel_syntax noprefix + .long HEX(9875) +
/* FUNCTIONS ***************************************************************/ +.code
// // lldiv - signed long divide @@ -222,3 +226,5 @@ pop edi
ret 16 + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/alldvrm_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/alldvrm_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/alldvrm_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC __alldvrm
-.globl __alldvrm - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
__alldvrm: push edi @@ -88,7 +89,7 @@
mov eax,DVNDHI // hi word of a or eax,eax // test to see if signed - jge short ....L1 // skip rest if a is already positive + jge short .L1 // skip rest if a is already positive inc edi // complement result sign flag inc ebp // complement result sign flag mov edx,DVNDLO // lo word of a @@ -97,10 +98,10 @@ sbb eax,0 mov DVNDHI,eax // save positive value mov DVNDLO,edx -....L1: +.L1: mov eax,DVSRHI // hi word of b or eax,eax // test to see if signed - jge short ....L2 // skip rest if b is already positive + jge short .L2 // skip rest if b is already positive inc edi // complement the result sign flag mov edx,DVSRLO // lo word of a neg eax // make b positive @@ -108,7 +109,7 @@ sbb eax,0 mov DVSRHI,eax // save positive value mov DVSRLO,edx -....L2: +.L2:
// // Now do the divide. First look to see if the divisor is less than 4194304K. @@ -119,7 +120,7 @@ //
or eax,eax // check to see if divisor < 4194304K - jnz short ....L3 // nope, gotta do this the hard way + jnz short .L3 // nope, gotta do this the hard way mov ecx,DVSRLO // load divisor mov eax,DVNDHI // load high word of dividend xor edx,edx @@ -137,24 +138,24 @@ mov eax,esi // set up low word of quotient mul dword ptr DVSRLO // LOWORD(QUOT) * DVSR add edx,ecx // EDX:EAX = QUOT * DVSR - jmp short ....L4 // complete remainder calculation + jmp short .L4 // complete remainder calculation
// // Here we do it the hard way. Remember, eax contains the high word of DVSR //
-....L3: +.L3: mov ebx,eax // ebx:ecx <- divisor mov ecx,DVSRLO mov edx,DVNDHI // edx:eax <- dividend mov eax,DVNDLO -....L5: +.L5: shr ebx,1 // shift divisor right one bit rcr ecx,1 shr edx,1 // shift dividend right one bit rcr eax,1 or ebx,ebx - jnz short ....L5 // loop until divisor < 4194304K + jnz short .L5 // loop until divisor < 4194304K div ecx // now divide, ignore remainder mov esi,eax // save quotient
@@ -170,7 +171,7 @@ mov eax,DVSRLO mul esi // QUOT * DVSRLO add edx,ecx // EDX:EAX = QUOT * DVSR - jc short ....L6 // carry means Quotient is off by 1 + jc short .L6 // carry means Quotient is off by 1
// // do long compare here between original dividend and the result of the @@ -179,18 +180,18 @@ //
cmp edx,DVNDHI // compare hi words of result and original - ja short ....L6 // if result > original, do subtract - jb short ....L7 // if result < original, we are ok + ja short .L6 // if result > original, do subtract + jb short .L7 // if result < original, we are ok cmp eax,DVNDLO // hi words are equal, compare lo words - jbe short ....L7 // if less or equal we are ok, else subtract -....L6: + jbe short .L7 // if less or equal we are ok, else subtract +.L6: dec esi // subtract 1 from quotient sub eax,DVSRLO // subtract divisor from result sbb edx,DVSRHI -....L7: +.L7: xor ebx,ebx // ebx:esi <- quotient
-....L4: +.L4: // // Calculate remainder by subtracting the result from the original dividend. // Since the result is already in a register, we will do the subtract in the @@ -208,7 +209,7 @@ //
dec ebp // check result sign flag - jns short ....L9 // result is ok, set up the quotient + jns short .L9 // result is ok, set up the quotient neg edx // otherwise, negate the result neg eax sbb edx,0 @@ -216,7 +217,7 @@ // // Now we need to get the quotient into edx:eax and the remainder into ebx:ecx. // -....L9: +.L9: mov ecx,edx mov edx,ebx mov ebx,ecx @@ -229,7 +230,7 @@ //
dec edi // check to see if result is negative - jnz short ....L8 // if EDI == 0, result should be negative + jnz short .L8 // if EDI == 0, result should be negative neg edx // otherwise, negate the result neg eax sbb edx,0 @@ -238,9 +239,11 @@ // Restore the saved registers and return. //
-....L8: +.L8: pop ebp pop esi pop edi
ret 16 + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/allmul_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/allmul_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/allmul_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - -.globl __allmul
-.intel_syntax noprefix +#include <reactos/asm.h> + +PUBLIC __allmul
/* FUNCTIONS ***************************************************************/ +.code
// // llmul - long multiply routine @@ -113,3 +114,4 @@
ret 16 // callee restores the stack
+END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/allrem_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/allrem_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/allrem_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC __allrem
-.globl __allrem - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
// // llrem - signed long remainder @@ -227,3 +228,5 @@ pop ebx
ret 16 + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/allshl_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/allshl_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/allshl_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - -.globl __allshl
-.intel_syntax noprefix +#include <reactos/asm.h> + +PUBLIC __allshl
/* FUNCTIONS ***************************************************************/ +.code
// // llshl - long shift left @@ -92,3 +93,5 @@ xor eax,eax xor edx,edx ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/allshr_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/allshr_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/allshr_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC __allshr
-.globl __allshr - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
// // llshr - long shift right @@ -93,3 +94,5 @@ sar edx,31 mov eax,edx ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/atan_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/atan_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/atan_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC _atan
-.globl _atan - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
_atan: push ebp @@ -48,3 +49,5 @@ fpatan // Take the arctangent pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/aulldiv_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/aulldiv_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/aulldiv_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - - .globl __aulldiv
-.intel_syntax noprefix +#include <reactos/asm.h> + +PUBLIC __aulldiv
/* FUNCTIONS ***************************************************************/ +.code
// // ulldiv - unsigned long divide @@ -105,7 +106,7 @@
mov eax,DVSRHI // check to see if divisor < 4194304K or eax,eax - jnz short ..L1 // nope, gotta do this the hard way + jnz short .L1 // nope, gotta do this the hard way mov ecx,DVSRLO // load divisor mov eax,DVNDHI // load high word of dividend xor edx,edx @@ -114,24 +115,24 @@ mov eax,DVNDLO // edx:eax <- remainder:lo word of dividend div ecx // get low order bits of quotient mov edx,ebx // edx:eax <- quotient hi:quotient lo - jmp short ..L2 // restore stack and return + jmp short .L2 // restore stack and return
// // Here we do it the hard way. Remember, eax contains DVSRHI //
-..L1: +.L1: mov ecx,eax // ecx:ebx <- divisor mov ebx,DVSRLO mov edx,DVNDHI // edx:eax <- dividend mov eax,DVNDLO -..L3: +.L3: shr ecx,1 // shift divisor right one bit// hi bit <- 0 rcr ebx,1 shr edx,1 // shift dividend right one bit// hi bit <- 0 rcr eax,1 or ecx,ecx - jnz short ..L3 // loop until divisor < 4194304K + jnz short .L3 // loop until divisor < 4194304K div ebx // now divide, ignore remainder mov esi,eax // save quotient
@@ -147,7 +148,7 @@ mov eax,DVSRLO mul esi // QUOT * DVSRLO add edx,ecx // EDX:EAX = QUOT * DVSR - jc short ..L4 // carry means Quotient is off by 1 + jc short .L4 // carry means Quotient is off by 1
// // do long compare here between original dividend and the result of the @@ -156,13 +157,13 @@ //
cmp edx,DVNDHI // compare hi words of result and original - ja short ..L4 // if result > original, do subtract - jb short ..L5 // if result < original, we are ok + ja short .L4 // if result > original, do subtract + jb short .L5 // if result < original, we are ok cmp eax,DVNDLO // hi words are equal, compare lo words - jbe short ..L5 // if less or equal we are ok, else subtract -..L4: + jbe short .L5 // if less or equal we are ok, else subtract +.L4: dec esi // subtract 1 from quotient -..L5: +.L5: xor edx,edx // edx:eax <- quotient mov eax,esi
@@ -171,9 +172,11 @@ // Restore the saved registers and return. //
-..L2: +.L2:
pop esi pop ebx
ret 16 + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/aulldvrm_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/aulldvrm_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/aulldvrm_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC __aulldvrm
-.globl __aulldvrm - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
__aulldvrm:
@@ -101,7 +102,7 @@
mov eax,DVSRHI // check to see if divisor < 4194304K or eax,eax - jnz short .....L1 // nope, gotta do this the hard way + jnz short .L1 // nope, gotta do this the hard way mov ecx,DVSRLO // load divisor mov eax,DVNDHI // load high word of dividend xor edx,edx @@ -120,24 +121,24 @@ mov eax,esi // set up low word of quotient mul dword ptr DVSRLO // LOWORD(QUOT) * DVSR add edx,ecx // EDX:EAX = QUOT * DVSR - jmp short .....L2 // complete remainder calculation + jmp short .L2 // complete remainder calculation
// // Here we do it the hard way. Remember, eax contains DVSRHI //
-.....L1: +.L1: mov ecx,eax // ecx:ebx <- divisor mov ebx,DVSRLO mov edx,DVNDHI // edx:eax <- dividend mov eax,DVNDLO -.....L3: +.L3: shr ecx,1 // shift divisor right one bit// hi bit <- 0 rcr ebx,1 shr edx,1 // shift dividend right one bit// hi bit <- 0 rcr eax,1 or ecx,ecx - jnz short .....L3 // loop until divisor < 4194304K + jnz short .L3 // loop until divisor < 4194304K div ebx // now divide, ignore remainder mov esi,eax // save quotient
@@ -153,7 +154,7 @@ mov eax,DVSRLO mul esi // QUOT * DVSRLO add edx,ecx // EDX:EAX = QUOT * DVSR - jc short .....L4 // carry means Quotient is off by 1 + jc short .L4 // carry means Quotient is off by 1
// // do long compare here between original dividend and the result of the @@ -162,18 +163,18 @@ //
cmp edx,DVNDHI // compare hi words of result and original - ja short .....L4 // if result > original, do subtract - jb short .....L5 // if result < original, we are ok + ja short .L4 // if result > original, do subtract + jb short .L5 // if result < original, we are ok cmp eax,DVNDLO // hi words are equal, compare lo words - jbe short .....L5 // if less or equal we are ok, else subtract -.....L4: + jbe short .L5 // if less or equal we are ok, else subtract +.L4: dec esi // subtract 1 from quotient sub eax,DVSRLO // subtract divisor from result sbb edx,DVSRHI -.....L5: +.L5: xor ebx,ebx // ebx:esi <- quotient
-.....L2: +.L2: // // Calculate remainder by subtracting the result from the original dividend. // Since the result is already in a register, we will do the subtract in the @@ -202,3 +203,5 @@ pop esi
ret 16 + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/aullrem_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/aullrem_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/aullrem_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC __aullrem
-.globl __aullrem - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
// // ullrem - unsigned long remainder @@ -101,7 +102,7 @@
mov eax,DVSRHI // check to see if divisor < 4194304K or eax,eax - jnz short ...L1 // nope, gotta do this the hard way + jnz short .L1 // nope, gotta do this the hard way mov ecx,DVSRLO // load divisor mov eax,DVNDHI // load high word of dividend xor edx,edx @@ -110,24 +111,24 @@ div ecx // edx <- final remainder mov eax,edx // edx:eax <- remainder xor edx,edx - jmp short ...L2 // restore stack and return + jmp short .L2 // restore stack and return
// // Here we do it the hard way. Remember, eax contains DVSRHI //
-...L1: +.L1: mov ecx,eax // ecx:ebx <- divisor mov ebx,DVSRLO mov edx,DVNDHI // edx:eax <- dividend mov eax,DVNDLO -...L3: +.L3: shr ecx,1 // shift divisor right one bit// hi bit <- 0 rcr ebx,1 shr edx,1 // shift dividend right one bit// hi bit <- 0 rcr eax,1 or ecx,ecx - jnz short ...L3 // loop until divisor < 4194304K + jnz short .L3 // loop until divisor < 4194304K div ebx // now divide, ignore remainder
// @@ -142,7 +143,7 @@ xchg ecx,eax // put partial product in ECX, get quotient in EAX mul dword ptr DVSRLO add edx,ecx // EDX:EAX = QUOT * DVSR - jc short ...L4 // carry means Quotient is off by 1 + jc short .L4 // carry means Quotient is off by 1
// // do long compare here between original dividend and the result of the @@ -151,14 +152,14 @@ //
cmp edx,DVNDHI // compare hi words of result and original - ja short ...L4 // if result > original, do subtract - jb short ...L5 // if result < original, we're ok + ja short .L4 // if result > original, do subtract + jb short .L5 // if result < original, we're ok cmp eax,DVNDLO // hi words are equal, compare lo words - jbe short ...L5 // if less or equal we're ok, else subtract -...L4: + jbe short .L5 // if less or equal we're ok, else subtract +.L4: sub eax,DVSRLO // subtract divisor from result sbb edx,DVSRHI -...L5: +.L5:
// // Calculate remainder by subtracting the result from the original dividend. @@ -177,8 +178,10 @@ // Restore the saved registers and return. //
-...L2: +.L2:
pop ebx
ret 16 + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/aullshr_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/aullshr_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/aullshr_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC __aullshr
-.globl __aullshr - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
// // ullshr - long shift right @@ -65,13 +66,13 @@ // depends only on the high order bit of edx). // cmp cl,64 - jae short ..RETZERO + jae short .RETZERO
// // Handle shifts of between 0 and 31 bits // cmp cl, 32 - jae short ..MORE32 + jae short .MORE32 shrd eax,edx,cl shr edx,cl ret @@ -79,7 +80,7 @@ // // Handle shifts of between 32 and 63 bits // -..MORE32: +.MORE32: mov eax,edx xor edx,edx and cl,31 @@ -89,7 +90,9 @@ // // return 0 in edx:eax // -..RETZERO: +.RETZERO: xor eax,eax xor edx,edx ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/ceil_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/ceil_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/ceil_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - -.globl _ceil
-.intel_syntax noprefix +#include <reactos/asm.h> + +PUBLIC _ceil
/* FUNCTIONS ***************************************************************/ +.code
_ceil: push ebp @@ -47,7 +48,7 @@ fld qword ptr [ebp+8] // Load real from stack fstcw [ebp-2] // Save control word fclex // Clear exceptions - mov word ptr [ebp-4],0xb63 // Rounding control word + mov word ptr [ebp-4], HEX(0b63) // Rounding control word fldcw [ebp-4] // Set new rounding control frndint // Round to integer fclex // Clear exceptions @@ -55,3 +56,5 @@ mov esp,ebp // Deallocate temporary space pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/ceilf.S URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/ceilf.S [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/ceilf.S [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -3,53 +3,34 @@ * This file is part of the w64 mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include <_mingw_mac.h>
- .file "ceilf.S" - .text - .align 4 -.globl __MINGW_USYMBOL(ceilf) - .def __MINGW_USYMBOL(ceilf); .scl 2; .type 32; .endef -__MINGW_USYMBOL(ceilf): -#ifdef _WIN64 - subq $24,%rsp - movss %xmm0,8(%rsp) - flds 8(%rsp) +#include <reactos/asm.h>
- fstcw 4(%rsp) /* store fpu control word */ +.code +.align 4
- movl $0x0800,%edx /* round towards +oo */ - orl 4(%rsp),%edx - andl $0xfbff,%edx - movl %edx,(%rsp) - fldcw (%rsp) /* load modified control word */ +PUBLIC _ceilf +_ceilf:
- frndint /* round */ + fld dword ptr [esp + 4] + sub esp, 8
- fldcw 4(%rsp) /* restore original control word */ - fstps 8(%rsp) - movss 8(%rsp),%xmm0 - addq $24,%rsp - ret -#else - flds 4(%esp) - subl $8,%esp - - fstcw 4(%esp) /* store fpu control word */ + fstcw [esp + 4] /* store fpu control word */
/* We use here %edx although only the low 1 bits are defined. But none of the operations should care and they are faster than the 16 bit operations. */ - movl $0x0800,%edx /* round towards +oo */ - orl 4(%esp),%edx - andl $0xfbff,%edx - movl %edx,(%esp) - fldcw (%esp) /* load modified control word */ + mov edx, [esp + 4] + or edx, HEX(0800) /* round towards +oo */ + and edx, HEX(fbff) + mov [esp], edx + fldcw [esp] /* load modified control word */
frndint /* round */
- fldcw 4(%esp) /* restore original control word */ + fldcw [esp + 4] /* restore original control word */
- addl $8,%esp + add esp, 8 ret -#endif + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/cos_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/cos_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/cos_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - -.globl _cos
-.intel_syntax noprefix +#include <reactos/asm.h> + +PUBLIC _cos
/* FUNCTIONS ***************************************************************/ +.code
_cos: push ebp @@ -47,3 +48,5 @@ fcos // Take the cosine pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/fabs_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/fabs_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/fabs_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC _fabs
-.globl _fabs - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
_fabs: push ebp @@ -47,3 +48,5 @@ fabs // Take the absolute value pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/floor_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/floor_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/floor_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC _floor
-.globl _floor - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
_floor: push ebp @@ -47,7 +48,7 @@ fld qword ptr [ebp+8] // Load real from stack fstcw [ebp-2] // Save control word fclex // Clear exceptions - mov word ptr [ebp-4],0x763 // Rounding control word + mov word ptr [ebp-4], HEX(0763) // Rounding control word fldcw [ebp-4] // Set new rounding control frndint // Round to integer fclex // Clear exceptions @@ -55,3 +56,5 @@ mov esp,ebp pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/floorf.S URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/floorf.S [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/floorf.S [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -7,57 +7,34 @@ * Removed header file dependency for use in libmingwex.a by * Danny Smith dannysmith@users.sourceforge.net */ -#include <_mingw_mac.h>
- .file "floorf.S" - .text -#ifdef _WIN64 - .align 8 -#else - .align 4 -#endif -.globl __MINGW_USYMBOL(floorf) - .def __MINGW_USYMBOL(floorf); .scl 2; .type 32; .endef -__MINGW_USYMBOL(floorf): -#ifdef _WIN64 - subq $24,%rsp - movss %xmm0,8(%rsp) - flds 8(%rsp) +#include <reactos/asm.h>
- fstcw 4(%rsp) /* store fpu control word */ - movl $0x400,%edx /* round towards -oo */ - orl 4(%rsp),%edx - andl $0xf7ff,%edx - movl %edx,(%rsp) - fldcw (%rsp) /* load modified control word */ +.code +.align 4
- frndint /* round */ +PUBLIC _floorf +_floorf:
- fldcw 4(%rsp) /* restore original control word */ + fld dword ptr [esp + 4] + sub esp, 8
- fstps 8(%rsp) - movss 8(%rsp),%xmm0 - addq $24,%rsp - ret -#else - flds 4(%esp) - subl $8,%esp - - fstcw 4(%esp) /* store fpu control word */ + fstcw [esp + 4] /* store fpu control word */
/* We use here %edx although only the low 1 bits are defined. But none of the operations should care and they are faster than the 16 bit operations. */ - movl $0x400,%edx /* round towards -oo */ - orl 4(%esp),%edx - andl $0xf7ff,%edx - movl %edx,(%esp) - fldcw (%esp) /* load modified control word */ + mov edx, [esp + 4] + or edx, HEX(0400) /* round towards -oo */ + and edx, HEX(0f7ff) + mov [esp], edx + fldcw [esp] /* load modified control word */
frndint /* round */
- fldcw 4(%esp) /* restore original control word */ + fldcw [esp + 4] /* restore original control word */
- addl $8,%esp + add esp, 8 ret -#endif + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/ftol_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/ftol_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/ftol_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC __ftol
-.globl __ftol - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
/* * This routine is called by MSVC-generated code to convert from floating point @@ -54,7 +55,7 @@ fstcw [ebp-2] wait mov ax, [ebp-2] - or ah, 0xC + or ah, 12 mov [ebp-4], ax fldcw [ebp-4]
@@ -71,3 +72,5 @@ /* Remove stack frame and return*/ leave ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/log10_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/log10_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/log10_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -7,12 +7,13 @@ * PROGRAMER: Magnus Olsen (magnus@greatlord.com) * */ - -.globl _log10
-.intel_syntax noprefix +#include <reactos/asm.h> + +PUBLIC _log10
/* FUNCTIONS ***************************************************************/ +.code
_log10:
@@ -25,3 +26,4 @@ pop ebp ret
+END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/log_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/log_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/log_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC _log
-.globl _log - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
_log: push ebp @@ -49,3 +50,5 @@ fyl2x // Compute the natural log(x) pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/pow_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/pow_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/pow_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -19,41 +19,54 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */
-/* Reacros modifications */ +/* Reactos modifications */ +#include <reactos/asm.h> + #define ALIGNARG(log2) log2 #define ASM_TYPE_DIRECTIVE(name,typearg) #define ASM_SIZE_DIRECTIVE(name) #define cfi_adjust_cfa_offset(x) -#define ENTRY(x) -#define END(x) -.global _pow - + +PUBLIC _pow + + .data .text +ASSUME CS:NOTHING, DS:NOTHING, ES:NOTHING, FS:NOTHING, GS:NOTHING
.align ALIGNARG(4) ASM_TYPE_DIRECTIVE(infinity,@object) + inf_zero: infinity: - .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f + .byte 0, 0, 0, 0, 0, 0, HEX(f0), HEX(7f) ASM_SIZE_DIRECTIVE(infinity) ASM_TYPE_DIRECTIVE(zero,@object) -zero: .double 0.0 +zero: + .double 0.0 ASM_SIZE_DIRECTIVE(zero) ASM_TYPE_DIRECTIVE(minf_mzero,@object) + minf_mzero: minfinity: - .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff + .byte 0, 0, 0, 0, 0, 0, HEX(f0), HEX(ff) + mzero: - .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + .byte 0, 0, 0, 0, 0, 0, 0, HEX(80) ASM_SIZE_DIRECTIVE(minf_mzero) ASM_TYPE_DIRECTIVE(one,@object) -one: .double 1.0 + +one: + .double 1.0 ASM_SIZE_DIRECTIVE(one) ASM_TYPE_DIRECTIVE(limit,@object) -limit: .double 0.29 + +limit: + .double 0.29 ASM_SIZE_DIRECTIVE(limit) ASM_TYPE_DIRECTIVE(p63,@object) -p63: .byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43 + +p63: + .byte 0, 0, 0, 0, 0, 0, HEX(e0), HEX(43) ASM_SIZE_DIRECTIVE(p63)
#ifdef PIC @@ -61,308 +74,310 @@ #define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) #else #define MO(op) op -#define MOX(op,x,f) op(,x,f) +#define MOX(op,x,f) op[x*f] #endif
+ .code .text _pow: -ENTRY(__ieee754_pow) - fldl 12(%esp) // y + fld qword ptr [esp + 12] // y fxam
#ifdef PIC LOAD_PIC_REG (cx) #endif
- fnstsw - movb %ah, %dl - andb $0x45, %ah - cmpb $0x40, %ah // is y == 0 ? - je 11f - - cmpb $0x05, %ah // is y == ±inf ? - je 12f - - cmpb $0x01, %ah // is y == NaN ? - je 30f - - fldl 4(%esp) // x : y - - subl $8,%esp + fnstsw ax + mov dl, ah + and ah, HEX(045) + cmp ah, HEX(040) // is y == 0 ? + je L11 + + cmp ah, 5 // is y == ±inf ? + je L12 + + cmp ah, 1 // is y == NaN ? + je L30 + + fld qword ptr [esp + 4] // x : y + + sub esp, 8 cfi_adjust_cfa_offset (8)
fxam - fnstsw - movb %ah, %dh - andb $0x45, %ah - cmpb $0x40, %ah - je 20f // x is ±0 - - cmpb $0x05, %ah - je 15f // x is ±inf - - fxch // y : x + fnstsw ax + mov dh, ah + and ah, HEX(45) + cmp ah, HEX(040) + je L20 // x is ±0 + + cmp ah, 5 + je L15 // x is ±inf + + fxch st(1) // y : x
/* fistpll raises invalid exception for |y| >= 1L<<63. */ - fld %st // y : y : x + fld st // y : y : x fabs // |y| : y : x - fcompl MO(p63) // y : x - fnstsw - sahf - jnc 2f + fcomp qword ptr MO(p63) // y : x + fnstsw ax + sahf + jnc L2
/* First see whether `y' is a natural number. In this case we can use a more precise algorithm. */ - fld %st // y : y : x - fistpll (%esp) // y : x - fildll (%esp) // int(y) : y : x - fucomp %st(1) // y : x - fnstsw - sahf - jne 2f + fld st // y : y : x + fistp qword ptr [esp] // y : x + fild qword ptr [esp] // int(y) : y : x + fucomp st(1) // y : x + fnstsw ax + sahf + jne L2
/* OK, we have an integer value for y. */ - popl %eax - cfi_adjust_cfa_offset (-4) - popl %edx - cfi_adjust_cfa_offset (-4) - orl $0, %edx - fstp %st(0) // x - jns 4f // y >= 0, jump - fdivrl MO(one) // 1/x (now referred to as x) - negl %eax - adcl $0, %edx - negl %edx -4: fldl MO(one) // 1 : x - fxch - -6: shrdl $1, %edx, %eax - jnc 5f - fxch - fmul %st(1) // x : ST*x - fxch -5: fmul %st(0), %st // x*x : ST*x - shrl $1, %edx - movl %eax, %ecx - orl %edx, %ecx - jnz 6b - fstp %st(0) // ST*x + pop eax + cfi_adjust_cfa_offset (-4) + pop edx + cfi_adjust_cfa_offset (-4) + or edx, 0 + fstp st // x + jns L4 // y >= 0, jump + fdivr qword ptr MO(one) // 1/x (now referred to as x) + neg eax + adc edx, 0 + neg edx +L4: fld qword ptr MO(one) // 1 : x + fxch st(1) + +L6: shrd eax, edx, 1 + jnc L5 + fxch st(1) + fmul st, st(1) // x : ST*x + fxch st(1) +L5: fmul st, st // x*x : ST*x + shr edx, 1 + mov ecx, eax + or ecx, edx + jnz L6 + fstp st // ST*x ret
/* y is ±NAN */ -30: fldl 4(%esp) // x : y - fldl MO(one) // 1.0 : x : y - fucomp %st(1) // x : y - fnstsw - sahf - je 31f - fxch // y : x -31: fstp %st(1) - ret - - cfi_adjust_cfa_offset (8) - .align ALIGNARG(4) -2: /* y is a real number. */ - fxch // x : y - fldl MO(one) // 1.0 : x : y - fldl MO(limit) // 0.29 : 1.0 : x : y - fld %st(2) // x : 0.29 : 1.0 : x : y - fsub %st(2) // x-1 : 0.29 : 1.0 : x : y +L30: + fld qword ptr [esp + 4] // x : y + fld qword ptr MO(one) // 1.0 : x : y + fucomp st(1) // x : y + fnstsw ax + sahf + je L31 + fxch st(1) // y : x +L31:fstp st(1) + ret + + cfi_adjust_cfa_offset (8) + .align ALIGNARG(4) +L2: /* y is a real number. */ + fxch st(1) // x : y + fld qword ptr MO(one) // 1.0 : x : y + fld qword ptr MO(limit) // 0.29 : 1.0 : x : y + fld st(2) // x : 0.29 : 1.0 : x : y + fsub st, st(2) // x-1 : 0.29 : 1.0 : x : y fabs // |x-1| : 0.29 : 1.0 : x : y fucompp // 1.0 : x : y - fnstsw - fxch // x : 1.0 : y - sahf - ja 7f - fsub %st(1) // x-1 : 1.0 : y + fnstsw ax + fxch st(1) // x : 1.0 : y + sahf + ja L7 + fsub st, st(1) // x-1 : 1.0 : y fyl2xp1 // log2(x) : y - jmp 8f - -7: fyl2x // log2(x) : y -8: fmul %st(1) // y*log2(x) : y - fst %st(1) // y*log2(x) : y*log2(x) + jmp L8 + +L7: fyl2x // log2(x) : y +L8: fmul st, st(1) // y*log2(x) : y + fst st(1) // y*log2(x) : y*log2(x) frndint // int(y*log2(x)) : y*log2(x) - fsubr %st, %st(1) // int(y*log2(x)) : fract(y*log2(x)) + fsubr st(1), st // int(y*log2(x)) : fract(y*log2(x)) fxch // fract(y*log2(x)) : int(y*log2(x)) f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x)) - faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) + fadd qword ptr MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x)) - addl $8, %esp - cfi_adjust_cfa_offset (-8) - fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) + add esp, 8 + cfi_adjust_cfa_offset (-8) + fstp st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) ret
// pow(x,±0) = 1 .align ALIGNARG(4) -11: fstp %st(0) // pop y - fldl MO(one) +L11:fstp st(0) // pop y + fld qword ptr MO(one) ret
// y == ±inf .align ALIGNARG(4) -12: fstp %st(0) // pop y - fldl MO(one) // 1 - fldl 4(%esp) // x : 1 +L12: fstp st(0) // pop y + fld qword ptr MO(one) // 1 + fld qword ptr [esp + 4] // x : 1 fabs // abs(x) : 1 fucompp // < 1, == 1, or > 1 - fnstsw - andb $0x45, %ah - cmpb $0x45, %ah - je 13f // jump if x is NaN - - cmpb $0x40, %ah - je 14f // jump if |x| == 1 - - shlb $1, %ah - xorb %ah, %dl - andl $2, %edx - fldl MOX(inf_zero, %edx, 4) - ret - - .align ALIGNARG(4) -14: fldl MO(one) - ret - - .align ALIGNARG(4) -13: fldl 4(%esp) // load x == NaN + fnstsw ax + and ah, HEX(45) + cmp ah, HEX(45) + je L13 // jump if x is NaN + + cmp ah, HEX(40) + je L14 // jump if |x| == 1 + + shl ah, 1 + xor dl, ah + and edx, 2 + fld qword ptr MOX(inf_zero, edx, 4) + ret + + .align ALIGNARG(4) +L14:fld qword ptr MO(one) + ret + + .align ALIGNARG(4) +L13:fld qword ptr [esp + 4] // load x == NaN ret
cfi_adjust_cfa_offset (8) .align ALIGNARG(4) // x is ±inf -15: fstp %st(0) // y - testb $2, %dh - jz 16f // jump if x == +inf +L15: fstp st(0) // y + test dh, 2 + jz L16 // jump if x == +inf
// We must find out whether y is an odd integer. - fld %st // y : y - fistpll (%esp) // y - fildll (%esp) // int(y) : y + fld st // y : y + fistp qword ptr [esp] // y + fild qword ptr [esp] // int(y) : y fucompp // <empty> - fnstsw - sahf - jne 17f + fnstsw ax + sahf + jne L17
// OK, the value is an integer, but is the number of bits small // enough so that all are coming from the mantissa? - popl %eax - cfi_adjust_cfa_offset (-4) - popl %edx - cfi_adjust_cfa_offset (-4) - andb $1, %al - jz 18f // jump if not odd - movl %edx, %eax - orl %edx, %edx - jns 155f - negl %eax -155: cmpl $0x00200000, %eax - ja 18f // does not fit in mantissa bits + pop eax + cfi_adjust_cfa_offset (-4) + pop edx + cfi_adjust_cfa_offset (-4) + and al, 1 + jz L18 // jump if not odd + mov eax, edx + or edx, edx + jns L155 + neg eax +L155: + cmp eax, HEX(000200000) + ja L18 // does not fit in mantissa bits // It's an odd integer. - shrl $31, %edx - fldl MOX(minf_mzero, %edx, 8) - ret - - cfi_adjust_cfa_offset (8) - .align ALIGNARG(4) -16: fcompl MO(zero) - addl $8, %esp - cfi_adjust_cfa_offset (-8) - fnstsw - shrl $5, %eax - andl $8, %eax - fldl MOX(inf_zero, %eax, 1) - ret - - cfi_adjust_cfa_offset (8) - .align ALIGNARG(4) -17: shll $30, %edx // sign bit for y in right position - addl $8, %esp - cfi_adjust_cfa_offset (-8) -18: shrl $31, %edx - fldl MOX(inf_zero, %edx, 8) + shr edx, 31 + fld qword ptr MOX(minf_mzero, edx, 8) + ret + + cfi_adjust_cfa_offset (8) + .align ALIGNARG(4) +L16:fcomp qword ptr MO(zero) + add esp, 8 + cfi_adjust_cfa_offset (-8) + fnstsw ax + shr eax, 5 + and eax, 8 + fld qword ptr MOX(inf_zero, eax, 1) + ret + + cfi_adjust_cfa_offset (8) + .align ALIGNARG(4) +L17: shl ecx, 30 // sign bit for y in right position + add esp, 8 + cfi_adjust_cfa_offset (-8) +L18: shr edx, 31 + fld qword ptr MOX(inf_zero, edx, 8) ret
cfi_adjust_cfa_offset (8) .align ALIGNARG(4) // x is ±0 -20: fstp %st(0) // y - testb $2, %dl - jz 21f // y > 0 +L20: fstp st(0) // y + test dl, 2 + jz L21 // y > 0
// x is ±0 and y is < 0. We must find out whether y is an odd integer. - testb $2, %dh - jz 25f - - fld %st // y : y - fistpll (%esp) // y - fildll (%esp) // int(y) : y + test dh, 2 + jz L25 + + fld st // y : y + fistp qword ptr [esp] // y + fild qword ptr [esp] // int(y) : y fucompp // <empty> - fnstsw - sahf - jne 26f + fnstsw ax + sahf + jne L26
// OK, the value is an integer, but is the number of bits small // enough so that all are coming from the mantissa? - popl %eax - cfi_adjust_cfa_offset (-4) - popl %edx - cfi_adjust_cfa_offset (-4) - andb $1, %al - jz 27f // jump if not odd - cmpl $0xffe00000, %edx - jbe 27f // does not fit in mantissa bits + pop eax + cfi_adjust_cfa_offset (-4) + pop edx + cfi_adjust_cfa_offset (-4) + and al, 1 + jz L27 // jump if not odd + cmp edx, HEX(0ffe00000) + jbe L27 // does not fit in mantissa bits // It's an odd integer. // Raise divide-by-zero exception and get minus infinity value. - fldl MO(one) - fdivl MO(zero) + fld qword ptr MO(one) + fdiv qword ptr MO(zero) fchs ret
cfi_adjust_cfa_offset (8) -25: fstp %st(0) -26: addl $8, %esp - cfi_adjust_cfa_offset (-8) -27: // Raise divide-by-zero exception and get infinity value. - fldl MO(one) - fdivl MO(zero) +L25: fstp st(0) +L26: add esp, 8 + cfi_adjust_cfa_offset (-8) +L27: // Raise divide-by-zero exception and get infinity value. + fld qword ptr MO(one) + fdiv qword ptr MO(zero) ret
cfi_adjust_cfa_offset (8) .align ALIGNARG(4) // x is ±0 and y is > 0. We must find out whether y is an odd integer. -21: testb $2, %dh - jz 22f - - fld %st // y : y - fistpll (%esp) // y - fildll (%esp) // int(y) : y +L21:test dh, 2 + jz L22 + + fld st // y : y + fistp qword ptr [esp] // y + fild qword ptr [esp] // int(y) : y fucompp // <empty> - fnstsw - sahf - jne 23f + fnstsw ax + sahf + jne L23
// OK, the value is an integer, but is the number of bits small // enough so that all are coming from the mantissa? - popl %eax - cfi_adjust_cfa_offset (-4) - popl %edx - cfi_adjust_cfa_offset (-4) - andb $1, %al - jz 24f // jump if not odd - cmpl $0xffe00000, %edx - jae 24f // does not fit in mantissa bits + pop eax + cfi_adjust_cfa_offset (-4) + pop edx + cfi_adjust_cfa_offset (-4) + and al, 1 + jz L24 // jump if not odd + cmp edx, HEX(0ffe00000) + jae L24 // does not fit in mantissa bits // It's an odd integer. - fldl MO(mzero) - ret - - cfi_adjust_cfa_offset (8) -22: fstp %st(0) -23: addl $8, %esp // Don't use 2 x pop - cfi_adjust_cfa_offset (-8) -24: fldl MO(zero) - ret - -END(__ieee754_pow) - - + fld qword ptr MO(mzero) + ret + + cfi_adjust_cfa_offset (8) +L22: fstp st(0) +L23: add esp, 8 // Don't use 2 x pop + cfi_adjust_cfa_offset (-8) +L24: fld qword ptr MO(zero) + ret + +END + +
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/sin_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/sin_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/sin_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - -.globl _sin
-.intel_syntax noprefix +#include <reactos/asm.h> + +PUBLIC _sin
/* FUNCTIONS ***************************************************************/ +.code
_sin: push ebp // Save register bp @@ -47,3 +48,5 @@ fsin // Take the sine pop ebp // Restore register bp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/sqrt_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/sqrt_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/sqrt_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC _sqrt
-.globl _sqrt - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
_sqrt: push ebp @@ -47,3 +48,5 @@ fsqrt // Take the square root pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/i386/tan_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/i... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/i386/tan_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/i386/tan_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -33,12 +33,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#include <reactos/asm.h> + +PUBLIC _tan
-.globl _tan - -.intel_syntax noprefix - /* FUNCTIONS ***************************************************************/ +.code
_tan: push ebp @@ -50,3 +51,5 @@ mov esp,ebp // Deallocate temporary space pop ebp ret + +END
Modified: branches/cmake-bringup/lib/sdk/crt/math/labs.c URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/math/l... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/math/labs.c [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/math/labs.c [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -1,5 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
+#ifndef _MSC_VER /* * @implemented */ @@ -8,3 +9,4 @@ { return j<0 ? -j : j; } +#endif
Modified: branches/cmake-bringup/lib/sdk/crt/mem/i386/memchr_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/mem/i3... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/mem/i386/memchr_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/mem/i386/memchr_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -5,28 +5,33 @@ * FILE: lib/sdk/crt/mem/i386/memchr.s */
+#include <reactos/asm.h> + /* * void* memchr(const void* s, int c, size_t n) */
-.globl _memchr +PUBLIC _memchr +.code
_memchr: - push %ebp - mov %esp,%ebp - push %edi - mov 0x8(%ebp),%edi - mov 0xc(%ebp),%eax - mov 0x10(%ebp),%ecx + push ebp + mov ebp, esp + push edi + mov edi, [ebp + 8] + mov eax, [ebp + 12] + mov ecx, [ebp + 16] cld - jecxz .Lnotfound - repne scasb - je .Lfound + jecxz .Lnotfound + repne scasb + je .Lfound .Lnotfound: - mov $1,%edi + mov edi, 1 .Lfound: - mov %edi,%eax - dec %eax - pop %edi + mov eax, edi + dec eax + pop edi leave ret + +END
Removed: branches/cmake-bringup/lib/sdk/crt/mem/i386/memcpy_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/mem/i3... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/mem/i386/memcpy_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/mem/i386/memcpy_asm.s (removed) @@ -1,114 +1,0 @@ -/* - * void *memcpy (void *to, const void *from, size_t count) - * - * NOTE: This code is a duplicate of memmove function from memmove_asm.s - */ - -.globl _memcpy - -_memcpy: - push %ebp - mov %esp,%ebp - - push %esi - push %edi - - mov 8(%ebp),%edi - mov 12(%ebp),%esi - mov 16(%ebp),%ecx - - cmp %esi,%edi - jbe .CopyUp - mov %ecx,%eax - add %esi,%eax - cmp %eax,%edi - jb .CopyDown - -.CopyUp: - cld - - cmp $16,%ecx - jb .L1 - mov %ecx,%edx - test $3,%edi - je .L2 -/* - * Make the destination dword aligned - */ - mov %edi,%ecx - and $3,%ecx - sub $5,%ecx - not %ecx - sub %ecx,%edx - rep movsb - mov %edx,%ecx -.L2: - shr $2,%ecx - rep movsl - mov %edx,%ecx - and $3,%ecx -.L1: - test %ecx,%ecx - je .L3 - rep movsb -.L3: - mov 8(%ebp),%eax - pop %edi - pop %esi - leave - ret - -.CopyDown: - std - - add %ecx,%edi - add %ecx,%esi - - cmp $16,%ecx - jb .L4 - mov %ecx,%edx - test $3,%edi - je .L5 - -/* - * Make the destination dword aligned - */ - mov %edi,%ecx - and $3,%ecx - sub %ecx,%edx - dec %esi - dec %edi - rep movsb - mov %edx,%ecx - - sub $3,%esi - sub $3,%edi -.L6: - shr $2,%ecx - rep movsl - mov %edx,%ecx - and $3,%ecx - je .L7 - add $3,%esi - add $3,%edi -.L8: - rep movsb -.L7: - cld - mov 8(%ebp),%eax - pop %edi - pop %esi - leave - ret -.L5: - sub $4,%edi - sub $4,%esi - jmp .L6 - -.L4: - test %ecx,%ecx - je .L7 - dec %esi - dec %edi - jmp .L8 -
Modified: branches/cmake-bringup/lib/sdk/crt/mem/i386/memmove_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/mem/i3... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/mem/i386/memmove_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/mem/i386/memmove_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -1,114 +1,120 @@ /* - * void *memmove (void *to, const void *from, size_t count) + * void *memcpy (void *to, const void *from, size_t count) * - * NOTE: This code is duplicated in memcpy_asm.s + * NOTE: This code is a duplicate of memmove function from memmove_asm.s */
-.globl _memmove +#include <reactos/asm.h>
+PUBLIC _memcpy +PUBLIC _memmove +.code + +_memcpy: _memmove: - push %ebp - mov %esp,%ebp + push ebp + mov ebp, esp - push %esi - push %edi + push esi + push edi - mov 8(%ebp),%edi - mov 12(%ebp),%esi - mov 16(%ebp),%ecx + mov edi, [ebp + 8] + mov esi, [ebp + 12] + mov ecx, [ebp + 16] - cmp %esi,%edi + cmp edi, esi jbe .CopyUp - mov %ecx,%eax - add %esi,%eax - cmp %eax,%edi - jb .CopyDown - + mov eax, ecx + add eax, esi + cmp edi, eax + jb .CopyDown + .CopyUp: cld - cmp $16,%ecx - jb .L1 - mov %ecx,%edx - test $3,%edi - je .L2 + cmp ecx, 16 + jb .L1 + mov edx, ecx + test edi, 3 + je .L2 /* * Make the destination dword aligned */ - mov %edi,%ecx - and $3,%ecx - sub $5,%ecx - not %ecx - sub %ecx,%edx - rep movsb - mov %edx,%ecx + mov ecx, edi + and ecx, 3 + sub ecx, 5 + not ecx + sub edx, ecx + rep movsb + mov ecx, edx .L2: - shr $2,%ecx - rep movsl - mov %edx,%ecx - and $3,%ecx + shr ecx, 2 + rep movsd + mov ecx, edx + and ecx, 3 .L1: - test %ecx,%ecx - je .L3 - rep movsb + test ecx, ecx + je .L3 + rep movsb .L3: - mov 8(%ebp),%eax - pop %edi - pop %esi + mov eax, [ebp + 8] + pop edi + pop esi leave ret
.CopyDown: - std + std
- add %ecx,%edi - add %ecx,%esi + add edi, ecx + add esi, ecx - cmp $16,%ecx - jb .L4 - mov %ecx,%edx - test $3,%edi - je .L5 + cmp ecx, 16 + jb .L4 + mov edx, ecx + test edi, 3 + je .L5 /* * Make the destination dword aligned */ - mov %edi,%ecx - and $3,%ecx - sub %ecx,%edx - dec %esi - dec %edi - rep movsb - mov %edx,%ecx + mov ecx, edi + and ecx, 3 + sub edx, ecx + dec esi + dec edi + rep movsb + mov ecx, edx - sub $3,%esi - sub $3,%edi + sub esi, 3 + sub edi, 3 .L6: - shr $2,%ecx - rep movsl - mov %edx,%ecx - and $3,%ecx - je .L7 - add $3,%esi - add $3,%edi + shr ecx, 2 + rep movsd + mov ecx, edx + and ecx, 3 + je .L7 + add esi, 3 + add edi, 3 .L8: - rep movsb + rep movsb .L7: cld - mov 8(%ebp),%eax - pop %edi - pop %esi + mov eax, [ebp + 8] + pop edi + pop esi leave ret .L5: - sub $4,%edi - sub $4,%esi - jmp .L6 - + sub edi, 4 + sub esi, 4 + jmp .L6 + .L4: - test %ecx,%ecx - je .L7 - dec %esi - dec %edi - jmp .L8 + test ecx, ecx + je .L7 + dec esi + dec edi + jmp .L8
+END
Modified: branches/cmake-bringup/lib/sdk/crt/mem/i386/memset_asm.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/mem/i3... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/mem/i386/memset_asm.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/mem/i386/memset_asm.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -1,47 +1,51 @@ /* * $Id$ */ + +#include <reactos/asm.h>
/* * void *memset (void *src, int val, size_t count) */
-.globl _memset +PUBLIC _memset +.code
_memset: - push %ebp - mov %esp,%ebp - push %edi - mov 0x8(%ebp),%edi - movzb 0xc(%ebp),%eax - mov 0x10(%ebp),%ecx + push ebp + mov ebp, esp + push edi + mov edi, [ebp + 8] + movzx eax, byte ptr [ebp + 12] + mov ecx, [ebp + 16] cld - cmp $16,%ecx - jb .L1 - mov $0x01010101,%edx - mul %edx - mov %ecx,%edx - test $3,%edi - je .L2 - mov %edi,%ecx - and $3,%ecx - sub $5,%ecx - not %ecx - sub %ecx,%edx - rep stosb - mov %edx,%ecx + cmp ecx, 16 + jb .L1 + mov edx, HEX(01010101) + mul edx + mov edx, ecx + test edi, 3 + je .L2 + mov ecx, edi + and ecx, 3 + sub ecx, 5 + not ecx + sub edx, ecx + rep stosb + mov ecx, edx .L2: - shr $2,%ecx - rep stosl - mov %edx,%ecx - and $3,%ecx + shr ecx, 2 + rep stosd + mov ecx, edx + and ecx, 3 .L1: - test %ecx,%ecx - je .L3 - rep stosb + test ecx, ecx + je .L3 + rep stosb .L3: - pop %edi - mov 0x8(%ebp),%eax + pop edi + mov eax, [ebp + 8] leave ret
+END
Modified: branches/cmake-bringup/lib/sdk/crt/mem/memcmp.c URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/mem/me... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/mem/memcmp.c [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/mem/memcmp.c [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -1,6 +1,8 @@ /* * $Id$ */ + +#ifndef _MSC_VER
#include <string.h>
@@ -15,3 +17,5 @@ } return 0; } + +#endif
Modified: branches/cmake-bringup/lib/sdk/crt/setjmp/i386/setjmp.s URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/setjmp... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/setjmp/i386/setjmp.s [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/setjmp/i386/setjmp.s [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -8,6 +8,9 @@ * NOTES: Implementation is not complete, see Wine source for a more * complete implementation */ + +#include <reactos/asm.h> +#include <ndk/asm.h>
#define JB_BP 0 #define JB_BX 1 @@ -20,6 +23,7 @@
#define JMPBUF 4
+.code /* * int * _setjmp(jmp_buf env); @@ -33,20 +37,20 @@ * Notes: * Sets up the jmp_buf */ -.globl __setjmp +PUBLIC __setjmp __setjmp: - xorl %eax, %eax - movl JMPBUF(%esp), %edx + xor eax, eax + mov edx, JMPBUF[esp]
/* Save registers. */ - movl %ebp, (JB_BP*4)(%edx) /* Save caller's frame pointer. */ - movl %ebx, (JB_BX*4)(%edx) - movl %edi, (JB_DI*4)(%edx) - movl %esi, (JB_SI*4)(%edx) - leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */ - movl %ecx, (JB_SP*4)(%edx) - movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */ - movl %ecx, (JB_IP*4)(%edx) + mov [edx + JB_BP*4], ebp /* Save caller's frame pointer. */ + mov [edx + JB_BX*4], ebx + mov [edx + JB_DI*4], edi + mov [edx + JB_SI*4], esi + lea ecx, JMPBUF[esp] /* Save SP as it will be after we return. */ + mov [edx + JB_SP*4], ecx + mov ecx, PCOFF[esp] /* Save PC we are returning to now. */ + mov [edx + JB_IP*4], ecx ret
/* @@ -62,23 +66,21 @@ * Notes: * Sets up the jmp_buf */ -.globl __setjmp3 +PUBLIC __setjmp3 __setjmp3: - xorl %eax, %eax - movl JMPBUF(%esp), %edx + xor eax, eax + mov edx, JMPBUF[esp]
/* Save registers. */ - movl %ebp, (JB_BP*4)(%edx) /* Save caller's frame pointer. */ - movl %ebx, (JB_BX*4)(%edx) - movl %edi, (JB_DI*4)(%edx) - movl %esi, (JB_SI*4)(%edx) - leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */ - movl %ecx, (JB_SP*4)(%edx) - movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */ - movl %ecx, (JB_IP*4)(%edx) + mov [edx + JB_BP*4], ebp /* Save caller's frame pointer. */ + mov [edx + JB_BX*4], ebx + mov [edx + JB_DI*4], edi + mov [edx + JB_SI*4], esi + lea ecx, JMPBUF[esp] /* Save SP as it will be after we return. */ + mov [edx + JB_SP*4], ecx + mov ecx, PCOFF[esp] /* Save PC we are returning to now. */ + mov [edx + JB_IP*4], ecx ret - -#define VAL 8
/* * void @@ -94,18 +96,20 @@ * Notes: * Non-local goto */ -.globl _longjmp +PUBLIC _longjmp _longjmp: - movl JMPBUF(%esp), %ecx /* User's jmp_buf in %ecx. */ + mov ecx, JMPBUF[esp] /* User's jmp_buf in %ecx. */
- movl VAL(%esp), %eax /* Second argument is return value. */ + mov eax, [esp + 8] /* Second argument is return value. */ /* Save the return address now. */ - movl (JB_IP*4)(%ecx), %edx + mov edx, [edx + JB_IP*4] /* Restore registers. */ - movl (JB_BP*4)(%ecx), %ebp - movl (JB_BX*4)(%ecx), %ebx - movl (JB_DI*4)(%ecx), %edi - movl (JB_SI*4)(%ecx), %esi - movl (JB_SP*4)(%ecx), %esp + mov ebp, [edx + JB_BP*4] + mov ebx, [edx + JB_BX*4] + mov edi, [edx + JB_DI*4] + mov esi, [edx + JB_SI*4] + mov esp, [edx + JB_SP*4] /* Jump to saved PC. */ - jmp *%edx + jmp dword ptr [edx] + +END
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tchar.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tchar.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tchar.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -21,12 +21,12 @@ #define _tlods lodsw #define _tstos stosw
-#define _tsize $2 +#define _tsize 2
#define _treg(_O_) _O_ ## x
-#define _tdec(_O_) sub $2, _O_ -#define _tinc(_O_) add $2, _O_ +#define _tdec(_O_) sub _O_, 2 +#define _tinc(_O_) add _O_, 2
#else
@@ -45,7 +45,7 @@ #define _tlods lodsb #define _tstos stosb
-#define _tsize $1 +#define _tsize 1
#define _treg(_O_) _O_ ## l
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcscat.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcscat.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcscat.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,31 +2,34 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcscat +PUBLIC _tcscat +.code
_tcscat: - push %esi - push %edi - mov 0x0C(%esp), %edi - mov 0x10(%esp), %esi + push esi + push edi + mov edi, [esp + 12] + mov esi, [esp + 16]
- xor %eax, %eax - mov $-1, %ecx - cld + xor eax, eax + mov ecx, -1 + cld
- repne _tscas - _tdec(%edi) + repne _tscas + _tdec(edi)
.L1: - _tlods - _tstos - test %_treg(a), %_treg(a) - jnz .L1 + _tlods + _tstos + test _treg(a), _treg(a) + jnz .L1
- mov 0x0C(%esp), %eax - pop %edi - pop %esi - ret + mov eax, [esp + 12] + pop edi + pop esi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcschr.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcschr.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcschr.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,29 +2,31 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcschr +PUBLIC _tcschr +.code
_tcschr: - push %esi - mov 0x8(%esp), %esi - mov 0xC(%esp), %edx - - cld + push esi + mov esi, [esp + 8] + mov edx, [esp + 12] + cld
.L1: - _tlods - cmp %_treg(a), %_treg(d) - je .L2 - test %_treg(a), %_treg(a) - jnz .L1 - mov _tsize, %esi + _tlods + cmp _treg(d), _treg(a) + je .L2 + test _treg(a), _treg(a) + jnz .L1 + mov esi, _tsize
.L2: - mov %esi, %eax - _tdec(%eax) + mov eax, esi + _tdec(eax)
- pop %esi - ret + pop esi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcscmp.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcscmp.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcscmp.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,33 +2,36 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcscmp +PUBLIC _tcscmp +.code
_tcscmp: - push %esi - push %edi - mov 0x0C(%esp), %esi - mov 0x10(%esp), %edi - xor %eax, %eax - cld + push esi + push edi + mov esi, [esp + 12] + mov edi, [esp + 16] + xor eax, eax + cld
.L1: - _tlods - _tscas - jne .L2 - test %eax, %eax - jne .L1 - xor %eax, %eax - jmp .L3 + _tlods + _tscas + jne .L2 + test eax, eax + jne .L1 + xor eax, eax + jmp .L3
.L2: - sbb %eax, %eax - or $1, %al + sbb eax, eax + or al, 1
.L3: - pop %edi - pop %esi - ret + pop edi + pop esi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcscpy.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcscpy.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcscpy.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,26 +2,29 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcscpy +PUBLIC _tcscpy +.code
_tcscpy: - push %esi - push %edi - mov 0x0C(%esp), %edi - mov 0x10(%esp), %esi - cld + push esi + push edi + mov edi, [esp + 12] + mov esi, [esp + 16] + cld
.L1: - _tlods - _tstos - test %_treg(a), %_treg(a) - jnz .L1 + _tlods + _tstos + test _treg(a), _treg(a) + jnz .L1
- mov 0x0C(%esp), %eax + mov eax, [esp + 12]
- pop %edi - pop %esi - ret + pop edi + pop esi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcslen.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcslen.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcslen.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,28 +2,31 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcslen +PUBLIC _tcslen +.code
_tcslen: - push %edi - mov 0x8(%esp), %edi - xor %eax, %eax - test %edi,%edi - jz _tcslen_end + push edi + mov edi, [esp + 8] + xor eax, eax + test edi, edi + jz _tcslen_end
- mov $-1, %ecx - cld + mov ecx, -1 + cld
- repne _tscas + repne _tscas
- not %ecx - dec %ecx + not ecx + dec ecx
- mov %ecx, %eax + mov eax, ecx
_tcslen_end: - pop %edi - ret + pop edi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncat.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncat.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncat.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,41 +2,44 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcsncat +PUBLIC _tcsncat +.code
_tcsncat: - push %esi - push %edi - mov 0x0C(%esp), %edi - mov 0x10(%esp), %esi - cld + push esi + push edi + mov edi, [esp + 12] + mov esi, [esp + 16] + cld
- xor %eax, %eax - mov $-1, %ecx - repne _tscas - _tdec(%edi) + xor eax, eax + mov ecx, -1 + repne _tscas + _tdec(edi)
- mov 0x14(%esp),%ecx + mov ecx, [esp + 20]
.L1: - dec %ecx - js .L2 - _tlods - _tstos - test %_treg(a), %_treg(a) - jne .L1 - jmp .L3 + dec ecx + js .L2 + _tlods + _tstos + test _treg(a), _treg(a) + jne .L1 + jmp .L3
.L2: - xor %eax, %eax - _tstos + xor eax, eax + _tstos
.L3: - mov 0x0C(%esp), %eax - pop %edi - pop %esi + mov eax, [esp + 12] + pop edi + pop esi
- ret + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncmp.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncmp.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncmp.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,39 +2,42 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcsncmp +PUBLIC _tcsncmp +.code
_tcsncmp: - push %esi - push %edi - mov 0x0C(%esp), %esi /* s1 */ - mov 0x10(%esp), %edi /* s2 */ - mov 0x14(%esp), %ecx /* n */ + push esi + push edi + mov esi, [esp + 12] /* s1 */ + mov edi, [esp + 16] /* s2 */ + mov ecx, [esp + 20] /* n */
- xor %eax,%eax - cld + xor eax, eax + cld
.L1: - dec %ecx - js .L2 - _tlods - _tscas - jne .L3 - test %eax, %eax - jne .L1 + dec ecx + js .L2 + _tlods + _tscas + jne .L3 + test eax, eax + jne .L1
.L2: - xor %eax, %eax - jmp .L4 + xor eax, eax + jmp .L4
.L3: - sbb %eax, %eax - or $1, %al + sbb eax, eax + or al, 1
.L4: - pop %edi - pop %esi - ret + pop edi + pop esi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncpy.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncpy.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcsncpy.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,33 +2,36 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcsncpy +PUBLIC _tcsncpy +.code
_tcsncpy: - push %esi - push %edi - mov 0x0C(%esp), %edi /* s1 */ - mov 0x10(%esp), %esi /* s2 */ - mov 0x14(%esp), %ecx /* n */ + push esi + push edi + mov edi, [esp + 12] /* s1 */ + mov esi, [esp + 16] /* s2 */ + mov ecx, [esp + 20] /* n */
- xor %eax, %eax - cld + xor eax, eax + cld
.L1: - dec %ecx - js .L2 - _tlods - _tstos - test %_treg(a), %_treg(a) - jnz .L1 - rep _tstos + dec ecx + js .L2 + _tlods + _tstos + test _treg(a), _treg(a) + jnz .L1 + rep _tstos
.L2: - mov 0x0C(%esp), %eax + mov eax, [esp + 12]
- pop %edi - pop %esi - ret + pop edi + pop esi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcsnlen.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcsnlen.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcsnlen.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,29 +2,32 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcsnlen +PUBLIC _tcsnlen +.code
_tcsnlen: - push %edi - mov 0x8(%esp), %edi - mov 0xC(%esp), %ecx - xor %eax, %eax - test %ecx, %ecx - jz .L1 - mov %ecx, %edx + push edi + mov edi, [esp + 8] + mov ecx, [esp + 12] + xor eax, eax + test ecx, ecx + jz .L1 + mov edx, ecx
- cld + cld
- repne _tscas + repne _tscas
- sete %al - sub %ecx, %edx - sub %eax, %edx - mov %edx, %eax + sete al + sub edx, ecx + sub edx, eax + mov eax, edx
.L1: - pop %edi - ret + pop edi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/i386/tcsrchr.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/i386/tcsrchr.h [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/i386/tcsrchr.h [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -2,30 +2,33 @@ */
#include "tchar.h" +#include <reactos/asm.h>
-.globl _tcsrchr +PUBLIC _tcsrchr +.code
_tcsrchr: - push %esi - mov 0x8(%esp), %esi - mov 0xC(%esp), %edx + push esi + mov esi, [esp + 8] + mov edx, [esp + 12]
- cld - mov _tsize, %ecx + cld + mov ecx, _tsize
.L1: - _tlods - cmp %_treg(a), %_treg(d) - jne .L2 - mov %esi, %ecx + _tlods + cmp _treg(d), _treg(a) + jne .L2 + mov ecx, esi
.L2: - test %_treg(a), %_treg(a) - jnz .L1 + test _treg(a), _treg(a) + jnz .L1
- mov %ecx, %eax - _tdec(%eax) - pop %esi - ret + mov eax, ecx + _tdec(eax) + pop esi + ret
+END /* EOF */
Modified: branches/cmake-bringup/lib/sdk/crt/string/strset.c URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/lib/sdk/crt/string... ============================================================================== --- branches/cmake-bringup/lib/sdk/crt/string/strset.c [iso-8859-1] (original) +++ branches/cmake-bringup/lib/sdk/crt/string/strset.c [iso-8859-1] Tue Nov 2 00:06:33 2010 @@ -7,6 +7,8 @@ * UPDATE HISTORY: * 25/11/05: Added license header */ + +#ifndef _MSC_VER
#if defined(__GNUC__) && !defined(__clang__) #define __int64 long long @@ -49,3 +51,5 @@ } return t; } + +#endif