[ros-diffs] [tkreuzer] 49421: [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 function...

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Tue Nov 2 00:06:34 UTC 2010


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/CMakeLists.txt?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/chkstk_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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 at 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/i386/seh.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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 at 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/abs.c?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/amd64/ceilf.S?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/amd64/floorf.S?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/alldiv_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/alldvrm_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/allmul_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/allrem_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/allshl_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/allshr_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/atan_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/aulldiv_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/aulldvrm_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/aullrem_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/aullshr_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/ceil_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/ceilf.S?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/cos_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/fabs_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/floor_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/floorf.S?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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 at 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/i386/ftol_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/log10_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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 at 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/i386/log_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/pow_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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, at 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, at object)
-zero:	.double 0.0
+zero:
+	.double 0.0
 	ASM_SIZE_DIRECTIVE(zero)
 	ASM_TYPE_DIRECTIVE(minf_mzero, at 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, at object)
-one:	.double 1.0
+
+one:
+	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	ASM_TYPE_DIRECTIVE(limit, at object)
-limit:	.double 0.29
+
+limit:
+	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 	ASM_TYPE_DIRECTIVE(p63, at 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/i386/sin_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/sqrt_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tan_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/labs.c?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/memchr_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/memcpy_asm.s?rev=49420&view=auto
==============================================================================
--- 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/i386/memmove_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/memset_asm.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/memcmp.c?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/setjmp.s?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tchar.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcscat.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcschr.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcscmp.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcscpy.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcslen.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcsncat.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcsncmp.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcsncpy.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcsnlen.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/i386/tcsrchr.h?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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/strset.c?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- 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




More information about the Ros-diffs mailing list