2.5-18.1
[jlayton/glibc.git] / sysdeps / i386 / mul_1.S
index e9be6fb618c20c9eb9548dabc3a48a7909f42da1..0d0c07e7cf4d670bd54899d3b98a4d88bcf29f7e 100644 (file)
@@ -1,6 +1,6 @@
 /* i80386 __mpn_mul_1 -- Multiply a limb vector with a limb and store
    the result in a second limb vector.
-   Copyright (C) 1992, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1992,1994,1997,1998,2000,2005 Free Software Foundation, Inc.
    This file is part of the GNU MP Library.
 
    The GNU MP Library is free software; you can redistribute it and/or modify
 ENTRY (BP_SYM (__mpn_mul_1))
        ENTER
 
-       pushl   %edi
-       pushl   %esi
+       pushl   %res_ptr
+       cfi_adjust_cfa_offset (4)
+       pushl   %s1_ptr
+       cfi_adjust_cfa_offset (4)
        pushl   %ebp
-       pushl   %ebx
+       cfi_adjust_cfa_offset (4)
+       pushl   %s2_limb
+       cfi_adjust_cfa_offset (4)
 
        movl    RES(%esp), %res_ptr
+       cfi_rel_offset (res_ptr, 12)
        movl    S1(%esp), %s1_ptr
+       cfi_rel_offset (s1_ptr, 8)
        movl    SIZE(%esp), %size
        movl    S2LIMB(%esp), %s2_limb
+       cfi_rel_offset (s2_limb, 0)
 #if __BOUNDED_POINTERS__
        shll    $2, %size       /* convert limbs to bytes */
        CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %size)
@@ -57,6 +64,7 @@ ENTRY (BP_SYM (__mpn_mul_1))
        leal    (%s1_ptr,%size,4), %s1_ptr
        negl    %size
        xorl    %ebp, %ebp
+       cfi_rel_offset (ebp, 4)
        ALIGN (3)
 L(oop):
        movl    (%s1_ptr,%size,4), %eax
@@ -70,10 +78,18 @@ L(oop):
        jnz     L(oop)
        movl    %ebp, %eax
 
-       popl    %ebx
+       popl    %s2_limb
+       cfi_adjust_cfa_offset (-4)
+       cfi_restore (s2_limb)
        popl    %ebp
-       popl    %esi
-       popl    %edi
+       cfi_adjust_cfa_offset (-4)
+       cfi_restore (ebp)
+       popl    %s1_ptr
+       cfi_adjust_cfa_offset (-4)
+       cfi_restore (s1_ptr)
+       popl    %res_ptr
+       cfi_adjust_cfa_offset (-4)
+       cfi_restore (res_ptr)
 
        LEAVE
        ret