1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
/*
** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
**
** Modified O.ROBERT 24, Avenue de Verdun 92170 VANVES, FRANCE
**
** E-mail: roberto@germinal.ibp.fr
**
** This file is distributed under the terms listed in the document
** "copying.dj", available from DJ Delorie at the address above.
** A copy of "copying.dj" should accompany this file; if not, a copy
** should be available from where this file was obtained. This file
** may not be distributed without a verbatim copy of "copying.dj".
**
** This file is distributed WITHOUT ANY WARRANTY; without even the implied
** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**
** or 03-Apr-1991 corrected bug about argument zero to pow
** fyl2x didn't like it
*/
/* Modified by H.J. Lu for Linux, 1992 */
/* Modified by J.-H. Rechtien, 2.2.1994 */
/* History:15,24 */
.file "exp.S"
#ifdef __ELF__
#define _pow2 pow2
#endif
#ifdef __ELF__
.section .rodata
#else
.text
#endif
#ifdef __i486__
.align 4,0x90
#else
.align 2,0x90
#endif
#ifdef __ELF__
.LC0:
#else
LC0:
#endif
.double 0d1.0000000000000000000e+00
.text
.globl _pow2
#ifdef __i486__
.align 4,0x90
#else
.align 2,0x90
#endif
_pow2:
pushl %ebp
movl %esp,%ebp
subl $8,%esp
#ifdef __PIC__
pushl %ebx
call .L1
.L1:
popl %ebx
addl $_GLOBAL_OFFSET_TABLE_+[.-.L1],%ebx
#endif
fldl 8(%ebp)
fstcw -4(%ebp)
fstcw -8(%ebp)
fwait
andw $0xf3ff,-4(%ebp)
fldcw -4(%ebp)
fldl %st(0)
frndint
fldcw -8(%ebp)
fxch %st(1)
fsub %st(1),%st
f2xm1
fwait
#ifdef __PIC__
faddl .LC0@GOTOFF(%ebx)
#else
#ifdef __ELF__
faddl .LC0
#else
faddl LC0
#endif
#endif
fscale
fstp %st(1)
#ifdef __PIC__
popl %ebx
#endif
movl %ebp,%esp
popl %ebp
ret
#ifdef __ELF__
.type pow2,@function
#endif
|