aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386/fpu
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/fpu')
-rw-r--r--sysdeps/i386/fpu/e_acosh.S6
-rw-r--r--sysdeps/i386/fpu/e_acoshf.S6
-rw-r--r--sysdeps/i386/fpu/e_acoshl.S6
-rw-r--r--sysdeps/i386/fpu/e_atanh.S4
-rw-r--r--sysdeps/i386/fpu/e_atanhf.S6
-rw-r--r--sysdeps/i386/fpu/e_atanhl.S4
-rw-r--r--sysdeps/i386/fpu/e_log.S4
-rw-r--r--sysdeps/i386/fpu/e_log10.S4
-rw-r--r--sysdeps/i386/fpu/e_log10f.S4
-rw-r--r--sysdeps/i386/fpu/e_log10l.S4
-rw-r--r--sysdeps/i386/fpu/e_log2.S4
-rw-r--r--sysdeps/i386/fpu/e_log2f.S4
-rw-r--r--sysdeps/i386/fpu/e_log2l.S4
-rw-r--r--sysdeps/i386/fpu/e_logf.S4
-rw-r--r--sysdeps/i386/fpu/e_logl.S4
-rw-r--r--sysdeps/i386/fpu/e_pow.S28
-rw-r--r--sysdeps/i386/fpu/e_powf.S25
-rw-r--r--sysdeps/i386/fpu/e_powl.S30
-rw-r--r--sysdeps/i386/fpu/e_scalb.S8
-rw-r--r--sysdeps/i386/fpu/e_scalbf.S8
-rw-r--r--sysdeps/i386/fpu/e_scalbl.S8
-rw-r--r--sysdeps/i386/fpu/s_asinh.S10
-rw-r--r--sysdeps/i386/fpu/s_asinhf.S10
-rw-r--r--sysdeps/i386/fpu/s_asinhl.S10
-rw-r--r--sysdeps/i386/fpu/s_cbrt.S12
-rw-r--r--sysdeps/i386/fpu/s_cbrtf.S12
-rw-r--r--sysdeps/i386/fpu/s_cbrtl.S12
-rw-r--r--sysdeps/i386/fpu/s_cexp.S6
-rw-r--r--sysdeps/i386/fpu/s_cexpf.S14
-rw-r--r--sysdeps/i386/fpu/s_cexpl.S6
-rw-r--r--sysdeps/i386/fpu/s_expm1.S6
-rw-r--r--sysdeps/i386/fpu/s_expm1f.S6
-rw-r--r--sysdeps/i386/fpu/s_expm1l.S6
-rw-r--r--sysdeps/i386/fpu/s_frexp.S6
-rw-r--r--sysdeps/i386/fpu/s_frexpf.S6
-rw-r--r--sysdeps/i386/fpu/s_frexpl.S6
-rw-r--r--sysdeps/i386/fpu/s_ilogb.S2
-rw-r--r--sysdeps/i386/fpu/s_ilogbf.S2
-rw-r--r--sysdeps/i386/fpu/s_ilogbl.S2
-rw-r--r--sysdeps/i386/fpu/s_llrint.S5
-rw-r--r--sysdeps/i386/fpu/s_llrintf.S5
-rw-r--r--sysdeps/i386/fpu/s_llrintl.S5
-rw-r--r--sysdeps/i386/fpu/s_log1p.S4
-rw-r--r--sysdeps/i386/fpu/s_log1pf.S4
-rw-r--r--sysdeps/i386/fpu/s_log1pl.S4
-rw-r--r--sysdeps/i386/fpu/s_lrint.S4
-rw-r--r--sysdeps/i386/fpu/s_lrintf.S4
-rw-r--r--sysdeps/i386/fpu/s_lrintl.S4
-rw-r--r--sysdeps/i386/fpu/s_nearbyint.S4
-rw-r--r--sysdeps/i386/fpu/s_nearbyintf.S4
-rw-r--r--sysdeps/i386/fpu/s_nearbyintl.S4
51 files changed, 199 insertions, 161 deletions
diff --git a/sysdeps/i386/fpu/e_acosh.S b/sysdeps/i386/fpu/e_acosh.S
index 981425ec7a..62a232471f 100644
--- a/sysdeps/i386/fpu/e_acosh.S
+++ b/sysdeps/i386/fpu/e_acosh.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -50,9 +50,7 @@ ENTRY(__ieee754_acosh)
cmpl $0x41b00000, %ecx
ja 3f // x > 2^28
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %ecx
ja 4f // x > 2
diff --git a/sysdeps/i386/fpu/e_acoshf.S b/sysdeps/i386/fpu/e_acoshf.S
index 17be69d575..1906c60578 100644
--- a/sysdeps/i386/fpu/e_acoshf.S
+++ b/sysdeps/i386/fpu/e_acoshf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -50,9 +50,7 @@ ENTRY(__ieee754_acoshf)
cmpl $0x47000000, %ecx
ja 3f // x > 2^14
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %ecx
ja 4f // x > 2
diff --git a/sysdeps/i386/fpu/e_acoshl.S b/sysdeps/i386/fpu/e_acoshl.S
index 7b6885da18..c7b548d25a 100644
--- a/sysdeps/i386/fpu/e_acoshl.S
+++ b/sysdeps/i386/fpu/e_acoshl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -57,9 +57,7 @@ ENTRY(__ieee754_acoshl)
cmpl $0x4020, %ecx
ja 3f // x > 2^34
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x4000, %ecx
ja 4f // x > 2
diff --git a/sysdeps/i386/fpu/e_atanh.S b/sysdeps/i386/fpu/e_atanh.S
index 6fb53a4acc..3566ec6eff 100644
--- a/sysdeps/i386/fpu/e_atanh.S
+++ b/sysdeps/i386/fpu/e_atanh.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arctanh function.
- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1999, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -58,7 +58,9 @@ ENTRY(__ieee754_atanh)
#ifdef PIC
call 1f
+ cfi_adjust_cfa_offset (4)
1: popl %edx
+ cfi_adjust_cfa_offset (-4)
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
#endif
diff --git a/sysdeps/i386/fpu/e_atanhf.S b/sysdeps/i386/fpu/e_atanhf.S
index a517929f2a..10ce6aed9e 100644
--- a/sysdeps/i386/fpu/e_atanhf.S
+++ b/sysdeps/i386/fpu/e_atanhf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arctanh function.
- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1999, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -57,9 +57,7 @@ ENTRY(__ieee754_atanhf)
ja 5f
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
andl $0x80000000, %ecx // ECX == 0 iff X >= 0
diff --git a/sysdeps/i386/fpu/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
index 6fda9bef89..8618c3fb35 100644
--- a/sysdeps/i386/fpu/e_atanhl.S
+++ b/sysdeps/i386/fpu/e_atanhl.S
@@ -64,9 +64,7 @@ ENTRY(__ieee754_atanhl)
7:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
andl $0x8000, %ecx // ECX == 0 iff X >= 0
diff --git a/sysdeps/i386/fpu/e_log.S b/sysdeps/i386/fpu/e_log.S
index c7cacdfb0a..5604e638f5 100644
--- a/sysdeps/i386/fpu/e_log.S
+++ b/sysdeps/i386/fpu/e_log.S
@@ -37,9 +37,7 @@ ENTRY(__ieee754_log)
fldln2 // log(2)
fldl 4(%esp) // x : log(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2)
diff --git a/sysdeps/i386/fpu/e_log10.S b/sysdeps/i386/fpu/e_log10.S
index e93184c219..525f08c96d 100644
--- a/sysdeps/i386/fpu/e_log10.S
+++ b/sysdeps/i386/fpu/e_log10.S
@@ -37,9 +37,7 @@ ENTRY(__ieee754_log10)
fldlg2 // log10(2)
fldl 4(%esp) // x : log10(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
fnstsw
diff --git a/sysdeps/i386/fpu/e_log10f.S b/sysdeps/i386/fpu/e_log10f.S
index 0a89f54784..da5069d583 100644
--- a/sysdeps/i386/fpu/e_log10f.S
+++ b/sysdeps/i386/fpu/e_log10f.S
@@ -38,9 +38,7 @@ ENTRY(__ieee754_log10f)
fldlg2 // log10(2)
flds 4(%esp) // x : log10(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
fnstsw
diff --git a/sysdeps/i386/fpu/e_log10l.S b/sysdeps/i386/fpu/e_log10l.S
index 25d3501663..3811516be5 100644
--- a/sysdeps/i386/fpu/e_log10l.S
+++ b/sysdeps/i386/fpu/e_log10l.S
@@ -39,9 +39,7 @@ ENTRY(__ieee754_log10l)
fldlg2 // log10(2)
fldt 4(%esp) // x : log10(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
fnstsw
diff --git a/sysdeps/i386/fpu/e_log2.S b/sysdeps/i386/fpu/e_log2.S
index 4f7f0d57d9..d80bf80239 100644
--- a/sysdeps/i386/fpu/e_log2.S
+++ b/sysdeps/i386/fpu/e_log2.S
@@ -34,9 +34,7 @@ limit: .double 0.29
.text
ENTRY(__ieee754_log2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fldl MO(one)
fldl 4(%esp) // x : 1
diff --git a/sysdeps/i386/fpu/e_log2f.S b/sysdeps/i386/fpu/e_log2f.S
index 88f28b423c..9eb7b2a826 100644
--- a/sysdeps/i386/fpu/e_log2f.S
+++ b/sysdeps/i386/fpu/e_log2f.S
@@ -34,9 +34,7 @@ limit: .double 0.29
.text
ENTRY(__ieee754_log2f)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fldl MO(one)
flds 4(%esp) // x : 1
diff --git a/sysdeps/i386/fpu/e_log2l.S b/sysdeps/i386/fpu/e_log2l.S
index f5c661a2d1..9de08f5de1 100644
--- a/sysdeps/i386/fpu/e_log2l.S
+++ b/sysdeps/i386/fpu/e_log2l.S
@@ -34,9 +34,7 @@ limit: .double 0.29
.text
ENTRY(__ieee754_log2l)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fldl MO(one)
fldt 4(%esp) // x : 1
diff --git a/sysdeps/i386/fpu/e_logf.S b/sysdeps/i386/fpu/e_logf.S
index bdba1d3225..128bb2754c 100644
--- a/sysdeps/i386/fpu/e_logf.S
+++ b/sysdeps/i386/fpu/e_logf.S
@@ -38,9 +38,7 @@ ENTRY(__ieee754_logf)
fldln2 // log(2)
flds 4(%esp) // x : log(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2)
diff --git a/sysdeps/i386/fpu/e_logl.S b/sysdeps/i386/fpu/e_logl.S
index bda3ea508e..5023d3012f 100644
--- a/sysdeps/i386/fpu/e_logl.S
+++ b/sysdeps/i386/fpu/e_logl.S
@@ -38,9 +38,7 @@ ENTRY(__ieee754_logl)
fldln2 // log(2)
fldt 4(%esp) // x : log(2)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fld %st // x : x : log(2)
fsubl MO(one) // x-1 : x : log(2)
diff --git a/sysdeps/i386/fpu/e_pow.S b/sysdeps/i386/fpu/e_pow.S
index d100c0ac57..c554ca4ecb 100644
--- a/sysdeps/i386/fpu/e_pow.S
+++ b/sysdeps/i386/fpu/e_pow.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function.
- Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004
+ Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -67,9 +67,7 @@ ENTRY(__ieee754_pow)
fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
@@ -87,6 +85,7 @@ ENTRY(__ieee754_pow)
fldl 4(%esp) // x : y
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fxam
fnstsw
@@ -120,7 +119,9 @@ ENTRY(__ieee754_pow)
/* 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
@@ -155,6 +156,7 @@ ENTRY(__ieee754_pow)
31: fstp %st(1)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
2: /* y is a real number. */
fxch // x : y
@@ -181,6 +183,7 @@ ENTRY(__ieee754_pow)
faddl 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))
ret
@@ -219,6 +222,7 @@ ENTRY(__ieee754_pow)
13: fldl 4(%esp) // load x == NaN
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±inf
15: fstp %st(0) // y
@@ -237,7 +241,9 @@ ENTRY(__ieee754_pow)
// 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
@@ -251,22 +257,27 @@ ENTRY(__ieee754_pow)
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)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±0
20: fstp %st(0) // y
@@ -288,7 +299,9 @@ ENTRY(__ieee754_pow)
// 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
@@ -300,13 +313,16 @@ ENTRY(__ieee754_pow)
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)
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
@@ -323,7 +339,9 @@ ENTRY(__ieee754_pow)
// 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
@@ -332,8 +350,10 @@ ENTRY(__ieee754_pow)
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
diff --git a/sysdeps/i386/fpu/e_powf.S b/sysdeps/i386/fpu/e_powf.S
index b3fa624f4d..c835b978b9 100644
--- a/sysdeps/i386/fpu/e_powf.S
+++ b/sysdeps/i386/fpu/e_powf.S
@@ -1,5 +1,6 @@
/* ix87 specific implementation of pow function.
- Copyright (C) 1996, 1997, 1999, 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2001, 2004, 2005
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -66,9 +67,7 @@ ENTRY(__ieee754_powf)
fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
@@ -86,6 +85,7 @@ ENTRY(__ieee754_powf)
flds 4(%esp) // x : y
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fxam
fnstsw
@@ -119,6 +119,7 @@ ENTRY(__ieee754_powf)
/* OK, we have an integer value for y. */
popl %edx
+ cfi_adjust_cfa_offset (-4)
orl $0, %edx
fstp %st(0) // x
jns 4f // y >= 0, jump
@@ -149,6 +150,7 @@ ENTRY(__ieee754_powf)
31: fstp %st(1)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
2: /* y is a real number. */
fxch // x : y
@@ -175,6 +177,7 @@ ENTRY(__ieee754_powf)
faddl 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 $4, %esp
+ cfi_adjust_cfa_offset (-4)
fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
ret
@@ -213,6 +216,7 @@ ENTRY(__ieee754_powf)
13: flds 4(%esp) // load x == NaN
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
// x is ±inf
15: fstp %st(0) // y
@@ -231,6 +235,7 @@ ENTRY(__ieee754_powf)
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %edx
+ cfi_adjust_cfa_offset (-4)
testb $1, %dl
jz 18f // jump if not odd
movl %edx, %eax
@@ -244,22 +249,27 @@ ENTRY(__ieee754_powf)
fldl MOX(minf_mzero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
16: fcompl MO(zero)
addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
fnstsw
shrl $5, %eax
andl $8, %eax
fldl MOX(inf_zero, %eax, 1)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
17: shll $30, %edx // sign bit for y in right position
addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
18: shrl $31, %edx
fldl MOX(inf_zero, %edx, 8)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
// x is ±0
20: fstp %st(0) // y
@@ -281,6 +291,7 @@ ENTRY(__ieee754_powf)
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %edx
+ cfi_adjust_cfa_offset (-4)
testb $1, %dl
jz 27f // jump if not odd
cmpl $0xff000000, %edx
@@ -292,13 +303,16 @@ ENTRY(__ieee754_powf)
fchs
ret
+ cfi_adjust_cfa_offset (4)
25: fstp %st(0)
26: addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
27: // Raise divide-by-zero exception and get infinity value.
fldl MO(one)
fdivl MO(zero)
ret
+ cfi_adjust_cfa_offset (4)
.align ALIGNARG(4)
// x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh
@@ -315,6 +329,7 @@ ENTRY(__ieee754_powf)
// OK, the value is an integer, but is the number of bits small
// enough so that all are coming from the mantissa?
popl %edx
+ cfi_adjust_cfa_offset (-4)
testb $1, %dl
jz 24f // jump if not odd
cmpl $0xff000000, %edx
@@ -323,8 +338,10 @@ ENTRY(__ieee754_powf)
fldl MO(mzero)
ret
+ cfi_adjust_cfa_offset (4)
22: fstp %st(0)
23: addl $4, %esp // Don't use pop.
+ cfi_adjust_cfa_offset (-4)
24: fldl MO(zero)
ret
diff --git a/sysdeps/i386/fpu/e_powl.S b/sysdeps/i386/fpu/e_powl.S
index 080764b84a..74f422816a 100644
--- a/sysdeps/i386/fpu/e_powl.S
+++ b/sysdeps/i386/fpu/e_powl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function.
- Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004
+ Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -67,9 +67,7 @@ ENTRY(__ieee754_powl)
fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
@@ -87,6 +85,7 @@ ENTRY(__ieee754_powl)
fldt 4(%esp) // x : y
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fxam
fnstsw
@@ -120,7 +119,9 @@ ENTRY(__ieee754_powl)
/* 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
@@ -155,6 +156,7 @@ ENTRY(__ieee754_powl)
31: fstp %st(1)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
2: /* y is a real number. */
fxch // x : y
@@ -186,13 +188,16 @@ ENTRY(__ieee754_powl)
faddl 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))
ret
+ cfi_adjust_cfa_offset (8)
28: fstp %st(1) // y*log2(x)
fldl MO(one) // 1 : y*log2(x)
fscale // 2^(y*log2(x)) : y*log2(x)
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
fstp %st(1) // 2^(y*log2(x))
ret
@@ -230,6 +235,7 @@ ENTRY(__ieee754_powl)
13: fldt 4(%esp) // load x == NaN
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±inf
15: fstp %st(0) // y
@@ -247,7 +253,9 @@ ENTRY(__ieee754_powl)
// OK, the value is an integer, but is it odd?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 18f // jump if not odd
// It's an odd integer.
@@ -255,22 +263,27 @@ ENTRY(__ieee754_powl)
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)
ret
+ cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
// x is ±0
20: fstp %st(0) // y
@@ -291,7 +304,9 @@ ENTRY(__ieee754_powl)
// OK, the value is an integer, but is it odd?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 27f // jump if not odd
// It's an odd integer.
@@ -301,13 +316,16 @@ ENTRY(__ieee754_powl)
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)
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
@@ -323,15 +341,19 @@ ENTRY(__ieee754_powl)
// OK, the value is an integer, but is it odd?
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
andb $1, %al
jz 24f // jump if not odd
// 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
diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
index 1596f6a700..7e334a3611 100644
--- a/sysdeps/i386/fpu/e_scalb.S
+++ b/sysdeps/i386/fpu/e_scalb.S
@@ -64,9 +64,7 @@ ENTRY(__ieee754_scalb)
/* y is -inf */
1: fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
movl 8(%esp), %edx
@@ -86,9 +84,7 @@ ENTRY(__ieee754_scalb)
2: fstp %st
fstp %st
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fldl MO(nan)
ret
diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
index d41c29327d..e99ee92cb0 100644
--- a/sysdeps/i386/fpu/e_scalbf.S
+++ b/sysdeps/i386/fpu/e_scalbf.S
@@ -66,9 +66,7 @@ ENTRY(__ieee754_scalbf)
/* y is -inf */
1: fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
movl 4(%esp), %edx
@@ -88,9 +86,7 @@ ENTRY(__ieee754_scalbf)
2: fstp %st
fstp %st
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fldl MO(nan)
ret
diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
index 65644f8f0e..3f67d0befb 100644
--- a/sysdeps/i386/fpu/e_scalbl.S
+++ b/sysdeps/i386/fpu/e_scalbl.S
@@ -66,9 +66,7 @@ ENTRY(__ieee754_scalbl)
/* y is -inf */
1: fxam
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fnstsw
movl 12(%esp), %edx
@@ -88,9 +86,7 @@ ENTRY(__ieee754_scalbl)
2: fstp %st
fstp %st
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
fldl MO(nan)
ret
diff --git a/sysdeps/i386/fpu/s_asinh.S b/sysdeps/i386/fpu/s_asinh.S
index 6c99d3b6f6..ca042b414b 100644
--- a/sysdeps/i386/fpu/s_asinh.S
+++ b/sysdeps/i386/fpu/s_asinh.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -62,9 +62,7 @@ ENTRY(__asinh)
fxch // |x| : log(2)
ja 3f // |x| > 2^28
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %eax
ja 5f // |x| > 2
@@ -100,9 +98,7 @@ ENTRY(__asinh)
.align ALIGNARG(4)
2:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
jecxz 4f
fchs // x
diff --git a/sysdeps/i386/fpu/s_asinhf.S b/sysdeps/i386/fpu/s_asinhf.S
index 32e6fd6071..d0ce6afc22 100644
--- a/sysdeps/i386/fpu/s_asinhf.S
+++ b/sysdeps/i386/fpu/s_asinhf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -62,9 +62,7 @@ ENTRY(__asinhf)
fxch // |x| : log(2)
ja 3f // |x| > 2^14
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x40000000, %eax
ja 5f // |x| > 2
@@ -100,9 +98,7 @@ ENTRY(__asinhf)
.align ALIGNARG(4)
2:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
jecxz 4f
fchs // x
diff --git a/sysdeps/i386/fpu/s_asinhl.S b/sysdeps/i386/fpu/s_asinhl.S
index 5933460f64..1040eead1c 100644
--- a/sysdeps/i386/fpu/s_asinhl.S
+++ b/sysdeps/i386/fpu/s_asinhl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -69,9 +69,7 @@ ENTRY(__asinhl)
fxch // |x| : log(2)
ja 3f // |x| > 2^34
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpl $0x4000, %eax
ja 5f // |x| > 2
@@ -107,9 +105,7 @@ ENTRY(__asinhl)
.align ALIGNARG(4)
2:
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
jecxz 4f
fchs // x
diff --git a/sysdeps/i386/fpu/s_cbrt.S b/sysdeps/i386/fpu/s_cbrt.S
index c69958bb57..e180b15466 100644
--- a/sysdeps/i386/fpu/s_cbrt.S
+++ b/sysdeps/i386/fpu/s_cbrt.S
@@ -1,5 +1,5 @@
/* Compute cubic root of double value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -89,9 +89,9 @@ ENTRY(__cbrt)
#ifdef PIC
pushl %ebx
- call 3f
-3: popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
#endif
cmpl $0x00100000, %eax
@@ -178,13 +178,17 @@ ENTRY(__cbrt)
fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */
fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax
+ cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx
+ cfi_adjust_cfa_offset (-4)
#ifdef PIC
movl 12(%esp), %eax
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
#else
movl 8(%esp), %eax
#endif
diff --git a/sysdeps/i386/fpu/s_cbrtf.S b/sysdeps/i386/fpu/s_cbrtf.S
index 03d5770efa..2ff4f6e088 100644
--- a/sysdeps/i386/fpu/s_cbrtf.S
+++ b/sysdeps/i386/fpu/s_cbrtf.S
@@ -1,5 +1,5 @@
/* Compute cubic root of float value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -76,9 +76,9 @@ ENTRY(__cbrtf)
#ifdef PIC
pushl %ebx
- call 3f
-3: popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
#endif
cmpl $0x00800000, %eax
@@ -155,13 +155,17 @@ ENTRY(__cbrtf)
fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */
fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax
+ cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx
+ cfi_adjust_cfa_offset (-4)
#ifdef PIC
movl 8(%esp), %eax
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
#else
movl 4(%esp), %eax
#endif
diff --git a/sysdeps/i386/fpu/s_cbrtl.S b/sysdeps/i386/fpu/s_cbrtl.S
index f9dac170e0..637ad729c1 100644
--- a/sysdeps/i386/fpu/s_cbrtl.S
+++ b/sysdeps/i386/fpu/s_cbrtl.S
@@ -1,5 +1,5 @@
/* Compute cubic root of long double value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -108,9 +108,9 @@ ENTRY(__cbrtl)
#ifdef PIC
pushl %ebx
- call 3f
-3: popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
#endif
cmpl $0, %eax
@@ -206,13 +206,17 @@ ENTRY(__cbrtl)
fldt MOX(32+factor,%ecx)
fmulp /* u*(t2+2*xm)/(2*t2+xm)*FACT */
pushl %eax
+ cfi_adjust_cfa_offset (4)
fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */
fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */
fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */
popl %edx
+ cfi_adjust_cfa_offset (-4)
#ifdef PIC
movl 16(%esp), %eax
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
#else
movl 12(%esp), %eax
#endif
diff --git a/sysdeps/i386/fpu/s_cexp.S b/sysdeps/i386/fpu/s_cexp.S
index 50d17aea11..47e3eb66a6 100644
--- a/sysdeps/i386/fpu/s_cexp.S
+++ b/sysdeps/i386/fpu/s_cexp.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of complex exponential function for double.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -71,9 +71,7 @@ ENTRY(__cexp)
fnstsw
fldl 16(%esp) /* y : x */
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
movb %ah, %dh
andb $0x45, %ah
diff --git a/sysdeps/i386/fpu/s_cexpf.S b/sysdeps/i386/fpu/s_cexpf.S
index 396e056135..f116854096 100644
--- a/sysdeps/i386/fpu/s_cexpf.S
+++ b/sysdeps/i386/fpu/s_cexpf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of complex exponential function for double.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -71,9 +71,7 @@ ENTRY(__cexpf)
fnstsw
flds 8(%esp) /* y : x */
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
movb %ah, %dh
andb $0x45, %ah
@@ -114,10 +112,13 @@ ENTRY(__cexpf)
fmulp %st, %st(3) /* sin(y) : e^x : e^x * cos(y) */
fmulp %st, %st(1) /* e^x * sin(y) : e^x * cos(y) */
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fstps 4(%esp)
fstps (%esp)
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
/* We have to reduce the argument to fsincos. */
@@ -133,10 +134,13 @@ ENTRY(__cexpf)
fmulp %st, %st(3)
fmulp %st, %st(1)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fstps 4(%esp)
fstps (%esp)
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
/* The real part is +-inf. We must make further differences. */
@@ -210,12 +214,14 @@ ENTRY(__cexpf)
+-Inf+-0i. */
.align ALIGNARG(4)
4: subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fstps (%esp)
shrl $6, %edx
fstp %st(0)
andl $8, %edx
movl MOX(huge_nan_null_null,%edx,1), %eax
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
/* The real part is +-Inf, the imaginary is also is not finite. */
diff --git a/sysdeps/i386/fpu/s_cexpl.S b/sysdeps/i386/fpu/s_cexpl.S
index cbc7c99f0e..8bb0680bce 100644
--- a/sysdeps/i386/fpu/s_cexpl.S
+++ b/sysdeps/i386/fpu/s_cexpl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of complex exponential function for double.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -71,9 +71,7 @@ ENTRY(__cexpl)
fnstsw
fldt 20(%esp) /* y : x */
#ifdef PIC
- call 1f
-1: popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+ LOAD_PIC_REG (cx)
#endif
movb %ah, %dh
andb $0x45, %ah
diff --git a/sysdeps/i386/fpu/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S
index 35e1ff6693..e761183639 100644
--- a/sysdeps/i386/fpu/s_expm1.S
+++ b/sysdeps/i386/fpu/s_expm1.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@@ -56,9 +56,7 @@ ENTRY(__expm1)
cmpb $0x40, %ch
je 3f // If +-0, jump.
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpb $0x05, %ch
je 2f // If +-Inf, jump.
diff --git a/sysdeps/i386/fpu/s_expm1f.S b/sysdeps/i386/fpu/s_expm1f.S
index c2c64f0748..88adb75b86 100644
--- a/sysdeps/i386/fpu/s_expm1f.S
+++ b/sysdeps/i386/fpu/s_expm1f.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@@ -56,9 +56,7 @@ ENTRY(__expm1f)
cmpb $0x40, %ch
je 3f // If +-0, jump.
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpb $0x05, %ch
je 2f // If +-Inf, jump.
diff --git a/sysdeps/i386/fpu/s_expm1l.S b/sysdeps/i386/fpu/s_expm1l.S
index 4d491c02f8..2dc379b790 100644
--- a/sysdeps/i386/fpu/s_expm1l.S
+++ b/sysdeps/i386/fpu/s_expm1l.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@@ -56,9 +56,7 @@ ENTRY(__expm1l)
cmpb $0x40, %ch
je 3f // If +-0, jump.
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
cmpb $0x05, %ch
je 2f // If +-Inf, jump.
diff --git a/sysdeps/i386/fpu/s_frexp.S b/sysdeps/i386/fpu/s_frexp.S
index 563105a917..cfc822106e 100644
--- a/sysdeps/i386/fpu/s_frexp.S
+++ b/sysdeps/i386/fpu/s_frexp.S
@@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for double.
- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -63,9 +63,7 @@ ENTRY (BP_SYM (__frexp))
fldl VAL0(%esp)
#ifdef PIC
- call 3f
-3: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
+ LOAD_PIC_REG (dx)
#endif
fmull MO(two54)
movl $-54, %ecx
diff --git a/sysdeps/i386/fpu/s_frexpf.S b/sysdeps/i386/fpu/s_frexpf.S
index 00c4ab5b8e..8640bbc223 100644
--- a/sysdeps/i386/fpu/s_frexpf.S
+++ b/sysdeps/i386/fpu/s_frexpf.S
@@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for float.
- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -60,9 +60,7 @@ ENTRY (BP_SYM (__frexpf))
flds VAL(%esp)
#ifdef PIC
- call 3f
-3: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
+ LOAD_PIC_REG (dx)
#endif
fmuls MO(two25)
movl $-25, %ecx
diff --git a/sysdeps/i386/fpu/s_frexpl.S b/sysdeps/i386/fpu/s_frexpl.S
index 1417507ded..60ae57ee3e 100644
--- a/sysdeps/i386/fpu/s_frexpl.S
+++ b/sysdeps/i386/fpu/s_frexpl.S
@@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for long double.
- Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -65,9 +65,7 @@ ENTRY (BP_SYM (__frexpl))
fldt VAL0(%esp)
#ifdef PIC
- call 3f
-3: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx
+ LOAD_PIC_REG (dx)
#endif
fmull MO(two64) /* It's not necessary to use a 80bit factor */
diff --git a/sysdeps/i386/fpu/s_ilogb.S b/sysdeps/i386/fpu/s_ilogb.S
index 68d9c1a680..0cf1ad7419 100644
--- a/sysdeps/i386/fpu/s_ilogb.S
+++ b/sysdeps/i386/fpu/s_ilogb.S
@@ -21,11 +21,13 @@ ENTRY(__ilogb)
fxtract
pushl %eax
+ cfi_adjust_cfa_offset (4)
fstp %st
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
diff --git a/sysdeps/i386/fpu/s_ilogbf.S b/sysdeps/i386/fpu/s_ilogbf.S
index 521afe2b60..99e53edd75 100644
--- a/sysdeps/i386/fpu/s_ilogbf.S
+++ b/sysdeps/i386/fpu/s_ilogbf.S
@@ -21,11 +21,13 @@ ENTRY(__ilogbf)
fxtract
pushl %eax
+ cfi_adjust_cfa_offset (4)
fstp %st
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
diff --git a/sysdeps/i386/fpu/s_ilogbl.S b/sysdeps/i386/fpu/s_ilogbl.S
index ed547bdc8b..1f559b311e 100644
--- a/sysdeps/i386/fpu/s_ilogbl.S
+++ b/sysdeps/i386/fpu/s_ilogbl.S
@@ -22,11 +22,13 @@ ENTRY(__ilogbl)
fxtract
pushl %eax
+ cfi_adjust_cfa_offset (4)
fstp %st
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
diff --git a/sysdeps/i386/fpu/s_llrint.S b/sysdeps/i386/fpu/s_llrint.S
index e8e5ecee09..23bbec6024 100644
--- a/sysdeps/i386/fpu/s_llrint.S
+++ b/sysdeps/i386/fpu/s_llrint.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,10 +25,13 @@
ENTRY(__llrint)
fldl 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fistpll (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
END(__llrint)
weak_alias (__llrint, llrint)
diff --git a/sysdeps/i386/fpu/s_llrintf.S b/sysdeps/i386/fpu/s_llrintf.S
index 1deabc4f54..3de73f6661 100644
--- a/sysdeps/i386/fpu/s_llrintf.S
+++ b/sysdeps/i386/fpu/s_llrintf.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,10 +25,13 @@
ENTRY(__llrintf)
flds 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fistpll (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
END(__llrintf)
weak_alias (__llrintf, llrintf)
diff --git a/sysdeps/i386/fpu/s_llrintl.S b/sysdeps/i386/fpu/s_llrintl.S
index b34d79a5d8..f6545e9fcd 100644
--- a/sysdeps/i386/fpu/s_llrintl.S
+++ b/sysdeps/i386/fpu/s_llrintl.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,10 +25,13 @@
ENTRY(__llrintl)
fldt 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fistpll (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
popl %edx
+ cfi_adjust_cfa_offset (-4)
ret
END(__llrintl)
weak_alias (__llrintl, llrintl)
diff --git a/sysdeps/i386/fpu/s_log1p.S b/sysdeps/i386/fpu/s_log1p.S
index d3bc3d7251..ec777fdf93 100644
--- a/sysdeps/i386/fpu/s_log1p.S
+++ b/sysdeps/i386/fpu/s_log1p.S
@@ -31,9 +31,7 @@ ENTRY(__log1p)
fldl 4(%esp)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
diff --git a/sysdeps/i386/fpu/s_log1pf.S b/sysdeps/i386/fpu/s_log1pf.S
index d5283fcfee..6919ac902e 100644
--- a/sysdeps/i386/fpu/s_log1pf.S
+++ b/sysdeps/i386/fpu/s_log1pf.S
@@ -31,9 +31,7 @@ ENTRY(__log1pf)
flds 4(%esp)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
diff --git a/sysdeps/i386/fpu/s_log1pl.S b/sysdeps/i386/fpu/s_log1pl.S
index 26c407b606..4bca67d6b0 100644
--- a/sysdeps/i386/fpu/s_log1pl.S
+++ b/sysdeps/i386/fpu/s_log1pl.S
@@ -36,9 +36,7 @@ ENTRY(__log1pl)
fldt 4(%esp)
#ifdef PIC
- call 1f
-1: popl %edx
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
+ LOAD_PIC_REG (dx)
#endif
fxam
diff --git a/sysdeps/i386/fpu/s_lrint.S b/sysdeps/i386/fpu/s_lrint.S
index a15f54f1da..799875b335 100644
--- a/sysdeps/i386/fpu/s_lrint.S
+++ b/sysdeps/i386/fpu/s_lrint.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,9 +25,11 @@
ENTRY(__lrint)
fldl 4(%esp)
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END(__lrint)
weak_alias (__lrint, lrint)
diff --git a/sysdeps/i386/fpu/s_lrintf.S b/sysdeps/i386/fpu/s_lrintf.S
index 0f15e64de2..2aa1a4e83d 100644
--- a/sysdeps/i386/fpu/s_lrintf.S
+++ b/sysdeps/i386/fpu/s_lrintf.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,9 +25,11 @@
ENTRY(__lrintf)
flds 4(%esp)
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END(__lrintf)
weak_alias (__lrintf, lrintf)
diff --git a/sysdeps/i386/fpu/s_lrintl.S b/sysdeps/i386/fpu/s_lrintl.S
index 90313d612c..c0211c11da 100644
--- a/sysdeps/i386/fpu/s_lrintl.S
+++ b/sysdeps/i386/fpu/s_lrintl.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,9 +25,11 @@
ENTRY(__lrintl)
fldt 4(%esp)
subl $4, %esp
+ cfi_adjust_cfa_offset (4)
fistpl (%esp)
fwait
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END(__lrintl)
weak_alias (__lrintl, lrintl)
diff --git a/sysdeps/i386/fpu/s_nearbyint.S b/sysdeps/i386/fpu/s_nearbyint.S
index d8bb382d9e..52909139a9 100644
--- a/sysdeps/i386/fpu/s_nearbyint.S
+++ b/sysdeps/i386/fpu/s_nearbyint.S
@@ -9,7 +9,9 @@
ENTRY(__nearbyint)
fldl 4(%esp)
pushl %eax
+ cfi_adjust_cfa_offset (4)
pushl %ecx
+ cfi_adjust_cfa_offset (4)
fnstcw (%esp)
movl (%esp), %eax
orl $0x20, %eax
@@ -19,7 +21,9 @@ ENTRY(__nearbyint)
fclex
fldcw (%esp)
popl %ecx
+ cfi_adjust_cfa_offset (-4)
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END (__nearbyint)
weak_alias (__nearbyint, nearbyint)
diff --git a/sysdeps/i386/fpu/s_nearbyintf.S b/sysdeps/i386/fpu/s_nearbyintf.S
index 21858650e2..6a6b1d6c2b 100644
--- a/sysdeps/i386/fpu/s_nearbyintf.S
+++ b/sysdeps/i386/fpu/s_nearbyintf.S
@@ -9,7 +9,9 @@
ENTRY(__nearbyintf)
flds 4(%esp)
pushl %eax
+ cfi_adjust_cfa_offset (4)
pushl %ecx
+ cfi_adjust_cfa_offset (4)
fnstcw (%esp)
movl (%esp), %eax
orl $0x20, %eax
@@ -19,7 +21,9 @@ ENTRY(__nearbyintf)
fclex
fldcw (%esp)
popl %ecx
+ cfi_adjust_cfa_offset (-4)
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END (__nearbyintf)
weak_alias (__nearbyintf, nearbyintf)
diff --git a/sysdeps/i386/fpu/s_nearbyintl.S b/sysdeps/i386/fpu/s_nearbyintl.S
index d74dacb990..819af63a8d 100644
--- a/sysdeps/i386/fpu/s_nearbyintl.S
+++ b/sysdeps/i386/fpu/s_nearbyintl.S
@@ -9,7 +9,9 @@
ENTRY(__nearbyintl)
fldt 4(%esp)
pushl %eax
+ cfi_adjust_cfa_offset (4)
pushl %ecx
+ cfi_adjust_cfa_offset (4)
fnstcw (%esp)
movl (%esp), %eax
orl $0x20, %eax
@@ -19,7 +21,9 @@ ENTRY(__nearbyintl)
fclex
fldcw (%esp)
popl %ecx
+ cfi_adjust_cfa_offset (-4)
popl %eax
+ cfi_adjust_cfa_offset (-4)
ret
END (__nearbyintl)
weak_alias (__nearbyintl, nearbyintl)