From c5dd4039253ec7d7d579fa3eeb4a6922768ecfd5 Mon Sep 17 00:00:00 2001 From: Bruce Evans Date: Sat, 14 Dec 1996 16:43:53 +0000 Subject: [PATCH] Fixed fiddling with the control word. Use the stack space reserved for that purpose instead of space below the stack. --- lib/msun/i387/s_ceil.S | 12 ++++++------ lib/msun/i387/s_floor.S | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/msun/i387/s_ceil.S b/lib/msun/i387/s_ceil.S index c500263a1c4a..84a1b7a8c151 100644 --- a/lib/msun/i387/s_ceil.S +++ b/lib/msun/i387/s_ceil.S @@ -35,24 +35,24 @@ #include -RCSID("$Id: s_ceil.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $") +RCSID("$Id: s_ceil.S,v 1.2 1994/08/19 11:14:21 jkh Exp $") ENTRY(ceil) pushl %ebp movl %esp,%ebp subl $8,%esp - fstcw -12(%ebp) /* store fpu control word */ - movw -12(%ebp),%dx + fstcw -4(%ebp) /* store fpu control word */ + movw -4(%ebp),%dx orw $0x0800,%dx /* round towards +oo */ andw $0xfbff,%dx - movw %dx,-16(%ebp) - fldcw -16(%ebp) /* load modfied control word */ + movw %dx,-8(%ebp) + fldcw -8(%ebp) /* load modfied control word */ fldl 8(%ebp); /* round */ frndint - fldcw -12(%ebp) /* restore original control word */ + fldcw -4(%ebp) /* restore original control word */ leave ret diff --git a/lib/msun/i387/s_floor.S b/lib/msun/i387/s_floor.S index 129b01ec2136..7abc424c7bce 100644 --- a/lib/msun/i387/s_floor.S +++ b/lib/msun/i387/s_floor.S @@ -35,24 +35,24 @@ #include -RCSID("$Id: s_floor.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $") +RCSID("$Id: s_floor.S,v 1.2 1994/08/19 11:14:25 jkh Exp $") ENTRY(floor) pushl %ebp movl %esp,%ebp subl $8,%esp - fstcw -12(%ebp) /* store fpu control word */ - movw -12(%ebp),%dx + fstcw -4(%ebp) /* store fpu control word */ + movw -4(%ebp),%dx orw $0x0400,%dx /* round towards -oo */ andw $0xf7ff,%dx - movw %dx,-16(%ebp) - fldcw -16(%ebp) /* load modfied control word */ + movw %dx,-8(%ebp) + fldcw -8(%ebp) /* load modfied control word */ fldl 8(%ebp); /* round */ frndint - fldcw -12(%ebp) /* restore original control word */ + fldcw -4(%ebp) /* restore original control word */ leave ret