patches/glibc/2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch
changeset 1 eeea35fbf182
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/glibc/2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch	Sat Feb 24 11:00:05 2007 +0000
     1.3 @@ -0,0 +1,1134 @@
     1.4 +# See http://sources.redhat.com/ml/crossgcc/2002-05/msg00132.html
     1.5 +# This patch is taken directly from the Montavista Hard Hat Linux 2.0 source RPMs,
     1.6 +# but has been rediffed against glibc-2.2.5
     1.7 +
     1.8 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Dist glibc-2.2.5/sysdeps/powerpc/Dist
     1.9 +--- glibc-2.2.5.old/sysdeps/powerpc/Dist	Fri Jun 30 23:30:21 2000
    1.10 ++++ glibc-2.2.5/sysdeps/powerpc/Dist	Thu Jul 10 11:43:17 2003
    1.11 +@@ -1,9 +1,6 @@
    1.12 + dl-machine.c
    1.13 + dl-start.S
    1.14 + ppc-mcount.S
    1.15 +-fe_nomask.c
    1.16 +-fprrest.S
    1.17 +-fprsave.S
    1.18 + gprsave1.S
    1.19 + gprsave0.S
    1.20 + gprrest1.S
    1.21 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Makefile glibc-2.2.5/sysdeps/powerpc/Makefile
    1.22 +--- glibc-2.2.5.old/sysdeps/powerpc/Makefile	Mon Nov 27 15:32:47 2000
    1.23 ++++ glibc-2.2.5/sysdeps/powerpc/Makefile	Thu Jul 10 11:43:17 2003
    1.24 +@@ -3,16 +3,12 @@
    1.25 + +cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc
    1.26 + asm-CPPFLAGS += -Wa,-mppc
    1.27 + 
    1.28 +-ifeq ($(subdir),math)
    1.29 +-libm-support += fenv_const fe_nomask
    1.30 +-endif
    1.31 +-
    1.32 + ifeq ($(subdir),gmon)
    1.33 + sysdep_routines += ppc-mcount
    1.34 + endif
    1.35 + 
    1.36 + ifeq ($(subdir),misc)
    1.37 +-sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 fprsave fprrest
    1.38 ++sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
    1.39 + endif
    1.40 + 
    1.41 + # On PPC, -fpic works until the GOT contains 2^15 bytes, and possibly
    1.42 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Versions glibc-2.2.5/sysdeps/powerpc/Versions
    1.43 +--- glibc-2.2.5.old/sysdeps/powerpc/Versions	Mon Feb 28 13:27:57 2000
    1.44 ++++ glibc-2.2.5/sysdeps/powerpc/Versions	Thu Jul 10 11:43:17 2003
    1.45 +@@ -1,8 +1,4 @@
    1.46 + libm {
    1.47 +-  GLIBC_2.1 {
    1.48 +-    # symbols used in macros from sysdeps/powerpc/bits/fenv.h
    1.49 +-    __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
    1.50 +-  }
    1.51 +   GLIBC_2.2 {
    1.52 +     # Special functions to save and restore registers used by the
    1.53 +     # runtime libraries.
    1.54 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S glibc-2.2.5/sysdeps/powerpc/__longjmp.S
    1.55 +--- glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S	Thu Jul  5 21:56:01 2001
    1.56 ++++ glibc-2.2.5/sysdeps/powerpc/__longjmp.S	Thu Jul 10 11:43:17 2003
    1.57 +@@ -24,6 +24,8 @@
    1.58 + #include <bp-sym.h>
    1.59 + #include <bp-asm.h>
    1.60 + 
    1.61 ++/* The FPU loads have been removed from this file - see fpu/__longjmp.S */
    1.62 ++
    1.63 + ENTRY (BP_SYM (__longjmp))
    1.64 + 	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
    1.65 + 
    1.66 +@@ -31,44 +33,26 @@
    1.67 + 	lwz r2,(JB_GPR2*4)(r3)
    1.68 + 	lwz r0,(JB_LR*4)(r3)
    1.69 + 	lwz r14,((JB_GPRS+0)*4)(r3)
    1.70 +-	lfd fp14,((JB_FPRS+0*2)*4)(r3)
    1.71 + 	lwz r15,((JB_GPRS+1)*4)(r3)
    1.72 +-	lfd fp15,((JB_FPRS+1*2)*4)(r3)
    1.73 + 	lwz r16,((JB_GPRS+2)*4)(r3)
    1.74 +-	lfd fp16,((JB_FPRS+2*2)*4)(r3)
    1.75 + 	lwz r17,((JB_GPRS+3)*4)(r3)
    1.76 +-	lfd fp17,((JB_FPRS+3*2)*4)(r3)
    1.77 + 	lwz r18,((JB_GPRS+4)*4)(r3)
    1.78 +-	lfd fp18,((JB_FPRS+4*2)*4)(r3)
    1.79 + 	lwz r19,((JB_GPRS+5)*4)(r3)
    1.80 +-	lfd fp19,((JB_FPRS+5*2)*4)(r3)
    1.81 + 	lwz r20,((JB_GPRS+6)*4)(r3)
    1.82 +-	lfd fp20,((JB_FPRS+6*2)*4)(r3)
    1.83 + 	mtlr r0
    1.84 + 	lwz r21,((JB_GPRS+7)*4)(r3)
    1.85 +-	lfd fp21,((JB_FPRS+7*2)*4)(r3)
    1.86 + 	lwz r22,((JB_GPRS+8)*4)(r3)
    1.87 +-	lfd fp22,((JB_FPRS+8*2)*4)(r3)
    1.88 + 	lwz r0,(JB_CR*4)(r3)
    1.89 + 	lwz r23,((JB_GPRS+9)*4)(r3)
    1.90 +-	lfd fp23,((JB_FPRS+9*2)*4)(r3)
    1.91 + 	lwz r24,((JB_GPRS+10)*4)(r3)
    1.92 +-	lfd fp24,((JB_FPRS+10*2)*4)(r3)
    1.93 + 	lwz r25,((JB_GPRS+11)*4)(r3)
    1.94 +-	lfd fp25,((JB_FPRS+11*2)*4)(r3)
    1.95 + 	mtcrf 0xFF,r0
    1.96 + 	lwz r26,((JB_GPRS+12)*4)(r3)
    1.97 +-	lfd fp26,((JB_FPRS+12*2)*4)(r3)
    1.98 + 	lwz r27,((JB_GPRS+13)*4)(r3)
    1.99 +-	lfd fp27,((JB_FPRS+13*2)*4)(r3)
   1.100 + 	lwz r28,((JB_GPRS+14)*4)(r3)
   1.101 +-	lfd fp28,((JB_FPRS+14*2)*4)(r3)
   1.102 + 	lwz r29,((JB_GPRS+15)*4)(r3)
   1.103 +-	lfd fp29,((JB_FPRS+15*2)*4)(r3)
   1.104 + 	lwz r30,((JB_GPRS+16)*4)(r3)
   1.105 +-	lfd fp30,((JB_FPRS+16*2)*4)(r3)
   1.106 + 	lwz r31,((JB_GPRS+17)*4)(r3)
   1.107 +-	lfd fp31,((JB_FPRS+17*2)*4)(r3)
   1.108 + 	mr r3,r4
   1.109 + 	blr
   1.110 + END (BP_SYM (__longjmp))
   1.111 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h
   1.112 +--- glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h	Thu Jul  5 21:56:01 2001
   1.113 ++++ glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h	Thu Jul 10 11:43:17 2003
   1.114 +@@ -17,6 +17,7 @@
   1.115 +    02111-1307 USA.  */
   1.116 + 
   1.117 + /* Define the machine-dependent type `jmp_buf'.  PowerPC version.  */
   1.118 ++/* For processors without floating point. */
   1.119 + 
   1.120 + #ifndef _SETJMP_H
   1.121 + # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
   1.122 +@@ -33,12 +34,11 @@
   1.123 + # define JB_LR     2  /* The address we will return to */
   1.124 + # define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18 in total */
   1.125 + # define JB_CR     21 /* Condition code registers. */
   1.126 +-# define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total */
   1.127 +-# define JB_SIZE   (58*4)
   1.128 ++# define JB_SIZE   (22*4)
   1.129 + #endif
   1.130 + 
   1.131 + #ifndef	_ASM
   1.132 +-typedef long int __jmp_buf[58];
   1.133 ++typedef long int __jmp_buf[22];
   1.134 + #endif
   1.135 + 
   1.136 + /* Test if longjmp to JMPBUF would unwind the frame
   1.137 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c
   1.138 +--- glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c	Thu Jul  5 21:56:01 2001
   1.139 ++++ glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c	Wed Dec 31 16:00:00 1969
   1.140 +@@ -1,48 +0,0 @@
   1.141 +-/* Clear given exceptions in current floating-point environment.
   1.142 +-   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
   1.143 +-   This file is part of the GNU C Library.
   1.144 +-
   1.145 +-   The GNU C Library is free software; you can redistribute it and/or
   1.146 +-   modify it under the terms of the GNU Lesser General Public
   1.147 +-   License as published by the Free Software Foundation; either
   1.148 +-   version 2.1 of the License, or (at your option) any later version.
   1.149 +-
   1.150 +-   The GNU C Library is distributed in the hope that it will be useful,
   1.151 +-   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.152 +-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.153 +-   Lesser General Public License for more details.
   1.154 +-
   1.155 +-   You should have received a copy of the GNU Lesser General Public
   1.156 +-   License along with the GNU C Library; if not, write to the Free
   1.157 +-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.158 +-   02111-1307 USA.  */
   1.159 +-
   1.160 +-#include <fenv_libc.h>
   1.161 +-
   1.162 +-#undef feclearexcept
   1.163 +-int
   1.164 +-__feclearexcept (int excepts)
   1.165 +-{
   1.166 +-  fenv_union_t u;
   1.167 +-
   1.168 +-  /* Get the current state.  */
   1.169 +-  u.fenv = fegetenv_register ();
   1.170 +-
   1.171 +-  /* Clear the relevant bits.  */
   1.172 +-  u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
   1.173 +-		      | (excepts & FPSCR_STICKY_BITS));
   1.174 +-
   1.175 +-  /* Put the new state in effect.  */
   1.176 +-  fesetenv_register (u.fenv);
   1.177 +-
   1.178 +-  /* Success.  */
   1.179 +-  return 0;
   1.180 +-}
   1.181 +-
   1.182 +-#include <shlib-compat.h>
   1.183 +-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
   1.184 +-strong_alias (__feclearexcept, __old_feclearexcept)
   1.185 +-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
   1.186 +-#endif
   1.187 +-
   1.188 +-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
   1.189 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fe_nomask.c
   1.190 +--- glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c	Thu Jul  5 21:56:01 2001
   1.191 ++++ glibc-2.2.5/sysdeps/powerpc/fe_nomask.c	Wed Dec 31 16:00:00 1969
   1.192 +@@ -1,32 +0,0 @@
   1.193 +-/* Procedure definition for FE_NOMASK_ENV.
   1.194 +-   Copyright (C) 1997 Free Software Foundation, Inc.
   1.195 +-   This file is part of the GNU C Library.
   1.196 +-
   1.197 +-   The GNU C Library is free software; you can redistribute it and/or
   1.198 +-   modify it under the terms of the GNU Lesser General Public
   1.199 +-   License as published by the Free Software Foundation; either
   1.200 +-   version 2.1 of the License, or (at your option) any later version.
   1.201 +-
   1.202 +-   The GNU C Library is distributed in the hope that it will be useful,
   1.203 +-   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.204 +-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.205 +-   Lesser General Public License for more details.
   1.206 +-
   1.207 +-   You should have received a copy of the GNU Lesser General Public
   1.208 +-   License along with the GNU C Library; if not, write to the Free
   1.209 +-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.210 +-   02111-1307 USA.  */
   1.211 +-
   1.212 +-#include <fenv.h>
   1.213 +-#include <errno.h>
   1.214 +-
   1.215 +-/* This is presently a stub, until it's decided how the kernels should
   1.216 +-   support this.  */
   1.217 +-
   1.218 +-const fenv_t *
   1.219 +-__fe_nomask_env(void)
   1.220 +-{
   1.221 +-  __set_errno (ENOSYS);
   1.222 +-  return FE_ENABLED_ENV;
   1.223 +-}
   1.224 +-stub_warning (__fe_nomask_env)
   1.225 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprrest.S glibc-2.2.5/sysdeps/powerpc/fprrest.S
   1.226 +--- glibc-2.2.5.old/sysdeps/powerpc/fprrest.S	Thu Jul  5 21:56:01 2001
   1.227 ++++ glibc-2.2.5/sysdeps/powerpc/fprrest.S	Wed Dec 31 16:00:00 1969
   1.228 +@@ -1,94 +0,0 @@
   1.229 +-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
   1.230 +-   This file is part of the GNU C Library.
   1.231 +-
   1.232 +-   The GNU C Library is free software; you can redistribute it and/or
   1.233 +-   modify it under the terms of the GNU Lesser General Public
   1.234 +-   License as published by the Free Software Foundation; either
   1.235 +-   version 2.1 of the License, or (at your option) any later version.
   1.236 +-
   1.237 +-   The GNU C Library is distributed in the hope that it will be useful,
   1.238 +-   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.239 +-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.240 +-   Lesser General Public License for more details.
   1.241 +-
   1.242 +-   You should have received a copy of the GNU Lesser General Public
   1.243 +-   License along with the GNU C Library; if not, write to the Free
   1.244 +-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.245 +-   02111-1307 USA.  */
   1.246 +-
   1.247 +-/*
   1.248 +-    Floating Point Registers (FPRs) restore routine
   1.249 +-*/
   1.250 +-
   1.251 +-#include <sysdep.h>
   1.252 +-
   1.253 +-ENTRY(_restfpr_all)
   1.254 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
   1.255 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
   1.256 +-C_TEXT(_restf14):
   1.257 +-C_TEXT(_restfpr_14):	lfd	fp14,-144(r1)
   1.258 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
   1.259 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
   1.260 +-C_TEXT(_restf15):
   1.261 +-C_TEXT(_restfpr_15):	lfd	fp15,-136(r1)
   1.262 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
   1.263 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
   1.264 +-C_TEXT(_restf16):
   1.265 +-C_TEXT(_restfpr_16):	lfd	fp16,-128(r1)
   1.266 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
   1.267 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
   1.268 +-C_TEXT(_restf17):
   1.269 +-C_TEXT(_restfpr_17):	lfd	fp17,-120(r1)
   1.270 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
   1.271 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
   1.272 +-C_TEXT(_restf18):
   1.273 +-C_TEXT(_restfpr_18):	lfd	fp18,-112(r1)
   1.274 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
   1.275 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
   1.276 +-C_TEXT(_restf19):
   1.277 +-C_TEXT(_restfpr_19):	lfd	fp19,-104(r1)
   1.278 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
   1.279 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
   1.280 +-C_TEXT(_restf20):
   1.281 +-C_TEXT(_restfpr_20):	lfd	fp20,-96(r1)
   1.282 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
   1.283 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
   1.284 +-C_TEXT(_restf21):
   1.285 +-C_TEXT(_restfpr_21):	lfd	fp21,-88(r1)
   1.286 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
   1.287 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
   1.288 +-C_TEXT(_restf22):
   1.289 +-C_TEXT(_restfpr_22):	lfd	fp22,-80(r1)
   1.290 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
   1.291 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
   1.292 +-C_TEXT(_restf23):
   1.293 +-C_TEXT(_restfpr_23):	lfd	fp23,-72(r1)
   1.294 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
   1.295 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
   1.296 +-C_TEXT(_restf24):
   1.297 +-C_TEXT(_restfpr_24):	lfd	fp24,-64(r1)
   1.298 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
   1.299 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
   1.300 +-C_TEXT(_restf25):
   1.301 +-C_TEXT(_restfpr_25):	lfd	fp25,-56(r1)
   1.302 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
   1.303 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
   1.304 +-C_TEXT(_restf26):
   1.305 +-C_TEXT(_restfpr_26):	lfd	fp26,-48(r1)
   1.306 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
   1.307 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
   1.308 +-C_TEXT(_restf27):
   1.309 +-C_TEXT(_restfpr_27):	lfd	fp27,-40(r1)
   1.310 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
   1.311 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
   1.312 +-C_TEXT(_restf28):
   1.313 +-C_TEXT(_restfpr_28):	lfd	fp28,-32(r1)
   1.314 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
   1.315 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
   1.316 +-C_TEXT(_restf29):
   1.317 +-C_TEXT(_restfpr_29):	lwz	r0,8(r1)	#get return address from frame
   1.318 +-			lfd	fp29,-24(r1)    #restore f29
   1.319 +-			mtlr	r0		#move return address to LR
   1.320 +-			lfd	fp30,-16(r1)	#restore f30
   1.321 +-			lfd	fp31,-8(r1)	#restore f31
   1.322 +-			blr			#return
   1.323 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprsave.S glibc-2.2.5/sysdeps/powerpc/fprsave.S
   1.324 +--- glibc-2.2.5.old/sysdeps/powerpc/fprsave.S	Thu Jul  5 21:56:01 2001
   1.325 ++++ glibc-2.2.5/sysdeps/powerpc/fprsave.S	Wed Dec 31 16:00:00 1969
   1.326 +@@ -1,93 +0,0 @@
   1.327 +-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
   1.328 +-   This file is part of the GNU C Library.
   1.329 +-
   1.330 +-   The GNU C Library is free software; you can redistribute it and/or
   1.331 +-   modify it under the terms of the GNU Lesser General Public
   1.332 +-   License as published by the Free Software Foundation; either
   1.333 +-   version 2.1 of the License, or (at your option) any later version.
   1.334 +-
   1.335 +-   The GNU C Library is distributed in the hope that it will be useful,
   1.336 +-   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.337 +-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.338 +-   Lesser General Public License for more details.
   1.339 +-
   1.340 +-   You should have received a copy of the GNU Lesser General Public
   1.341 +-   License along with the GNU C Library; if not, write to the Free
   1.342 +-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.343 +-   02111-1307 USA.  */
   1.344 +-
   1.345 +-/*
   1.346 +-    Floating Point Registers (FPRs) save routine
   1.347 +-*/
   1.348 +-
   1.349 +-#include <sysdep.h>
   1.350 +-
   1.351 +-ENTRY(_savefpr_all)
   1.352 +-                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
   1.353 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
   1.354 +-C_TEXT(_savef14):
   1.355 +-C_TEXT(_savefpr_14):	stfd	fp14,-144(r1)
   1.356 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
   1.357 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
   1.358 +-C_TEXT(_savef15):
   1.359 +-C_TEXT(_savefpr_15):	stfd	fp15,-136(r1)
   1.360 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
   1.361 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
   1.362 +-C_TEXT(_savef16):
   1.363 +-C_TEXT(_savefpr_16):	stfd	fp16,-128(r1)
   1.364 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
   1.365 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
   1.366 +-C_TEXT(_savef17):
   1.367 +-C_TEXT(_savefpr_17):	stfd	fp17,-120(r1)
   1.368 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
   1.369 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
   1.370 +-C_TEXT(_savef18):
   1.371 +-C_TEXT(_savefpr_18):	stfd	fp18,-112(r1)
   1.372 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
   1.373 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
   1.374 +-C_TEXT(_savef19):
   1.375 +-C_TEXT(_savefpr_19):	stfd	fp19,-104(r1)
   1.376 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
   1.377 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
   1.378 +-C_TEXT(_savef20):
   1.379 +-C_TEXT(_savefpr_20):	stfd	fp20,-96(r1)
   1.380 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
   1.381 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
   1.382 +-C_TEXT(_savef21):
   1.383 +-C_TEXT(_savefpr_21):	stfd	fp21,-88(r1)
   1.384 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
   1.385 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
   1.386 +-C_TEXT(_savef22):
   1.387 +-C_TEXT(_savefpr_22):	stfd	fp22,-80(r1)
   1.388 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
   1.389 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
   1.390 +-C_TEXT(_savef23):
   1.391 +-C_TEXT(_savefpr_23):	stfd	fp23,-72(r1)
   1.392 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
   1.393 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
   1.394 +-C_TEXT(_savef24):
   1.395 +-C_TEXT(_savefpr_24):	stfd	fp24,-64(r1)
   1.396 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
   1.397 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
   1.398 +-C_TEXT(_savef25):
   1.399 +-C_TEXT(_savefpr_25):	stfd	fp25,-56(r1)
   1.400 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
   1.401 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
   1.402 +-C_TEXT(_savef26):
   1.403 +-C_TEXT(_savefpr_26):	stfd	fp26,-48(r1)
   1.404 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
   1.405 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
   1.406 +-C_TEXT(_savef27):
   1.407 +-C_TEXT(_savefpr_27):	stfd	fp27,-40(r1)
   1.408 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
   1.409 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
   1.410 +-C_TEXT(_savef28):
   1.411 +-C_TEXT(_savefpr_28):	stfd	fp28,-32(r1)
   1.412 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
   1.413 +-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
   1.414 +-C_TEXT(_savef29):
   1.415 +-C_TEXT(_savefpr_29):	stfd	fp29,-24(r1)	#save f29
   1.416 +-			stfd	fp30,-16(r1)	#save f30
   1.417 +-			stfd	fp31,-8(r1)	#save f31
   1.418 +-			stw	r0,8(r1)	#save LR in callers frame
   1.419 +-			blr			#return
   1.420 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist glibc-2.2.5/sysdeps/powerpc/fpu/Dist
   1.421 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist	Wed Jan 26 17:48:02 2000
   1.422 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/Dist	Thu Jul 10 11:43:17 2003
   1.423 +@@ -1,3 +1,6 @@
   1.424 ++fe_nomask.c
   1.425 ++fprrest.S
   1.426 ++fprsave.S
   1.427 + fenv_const.c
   1.428 + fenv_libc.h
   1.429 + t_sqrt.c
   1.430 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile glibc-2.2.5/sysdeps/powerpc/fpu/Makefile
   1.431 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile	Mon Oct 11 15:29:00 1999
   1.432 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/Makefile	Thu Jul 10 11:43:17 2003
   1.433 +@@ -1,3 +1,7 @@
   1.434 + ifeq ($(subdir),math)
   1.435 + libm-support += fenv_const fe_nomask t_sqrt
   1.436 + endif
   1.437 ++
   1.438 ++ifeq ($(subdir),misc)
   1.439 ++sysdep_routines += fprsave fprrest
   1.440 ++endif
   1.441 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions glibc-2.2.5/sysdeps/powerpc/fpu/Versions
   1.442 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions	Wed Dec 31 16:00:00 1969
   1.443 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/Versions	Thu Jul 10 11:43:17 2003
   1.444 +@@ -0,0 +1,6 @@
   1.445 ++libm {
   1.446 ++  GLIBC_2.1 {
   1.447 ++    # symbols used in macros from sysdeps/powerpc/bits/fenv.h
   1.448 ++    __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
   1.449 ++  }
   1.450 ++}
   1.451 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S
   1.452 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S	Wed Dec 31 16:00:00 1969
   1.453 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S	Thu Jul 10 11:43:17 2003
   1.454 +@@ -0,0 +1,74 @@
   1.455 ++/* longjmp for PowerPC.
   1.456 ++   Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
   1.457 ++   This file is part of the GNU C Library.
   1.458 ++
   1.459 ++   The GNU C Library is free software; you can redistribute it and/or
   1.460 ++   modify it under the terms of the GNU Library General Public License as
   1.461 ++   published by the Free Software Foundation; either version 2 of the
   1.462 ++   License, or (at your option) any later version.
   1.463 ++
   1.464 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.465 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.466 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.467 ++   Library General Public License for more details.
   1.468 ++
   1.469 ++   You should have received a copy of the GNU Library General Public
   1.470 ++   License along with the GNU C Library; see the file COPYING.LIB.  If not,
   1.471 ++   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   1.472 ++   Boston, MA 02111-1307, USA.  */
   1.473 ++
   1.474 ++#include <sysdep.h>
   1.475 ++#define _ASM
   1.476 ++#define _SETJMP_H
   1.477 ++#include <bits/setjmp.h>
   1.478 ++#include <bp-sym.h>
   1.479 ++#include <bp-asm.h>
   1.480 ++
   1.481 ++ENTRY (BP_SYM (__longjmp))
   1.482 ++	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
   1.483 ++
   1.484 ++	lwz r1,(JB_GPR1*4)(r3)
   1.485 ++	lwz r2,(JB_GPR2*4)(r3)
   1.486 ++	lwz r0,(JB_LR*4)(r3)
   1.487 ++	lwz r14,((JB_GPRS+0)*4)(r3)
   1.488 ++	lfd fp14,((JB_FPRS+0*2)*4)(r3)
   1.489 ++	lwz r15,((JB_GPRS+1)*4)(r3)
   1.490 ++	lfd fp15,((JB_FPRS+1*2)*4)(r3)
   1.491 ++	lwz r16,((JB_GPRS+2)*4)(r3)
   1.492 ++	lfd fp16,((JB_FPRS+2*2)*4)(r3)
   1.493 ++	lwz r17,((JB_GPRS+3)*4)(r3)
   1.494 ++	lfd fp17,((JB_FPRS+3*2)*4)(r3)
   1.495 ++	lwz r18,((JB_GPRS+4)*4)(r3)
   1.496 ++	lfd fp18,((JB_FPRS+4*2)*4)(r3)
   1.497 ++	lwz r19,((JB_GPRS+5)*4)(r3)
   1.498 ++	lfd fp19,((JB_FPRS+5*2)*4)(r3)
   1.499 ++	lwz r20,((JB_GPRS+6)*4)(r3)
   1.500 ++	lfd fp20,((JB_FPRS+6*2)*4)(r3)
   1.501 ++	mtlr r0
   1.502 ++	lwz r21,((JB_GPRS+7)*4)(r3)
   1.503 ++	lfd fp21,((JB_FPRS+7*2)*4)(r3)
   1.504 ++	lwz r22,((JB_GPRS+8)*4)(r3)
   1.505 ++	lfd fp22,((JB_FPRS+8*2)*4)(r3)
   1.506 ++	lwz r0,(JB_CR*4)(r3)
   1.507 ++	lwz r23,((JB_GPRS+9)*4)(r3)
   1.508 ++	lfd fp23,((JB_FPRS+9*2)*4)(r3)
   1.509 ++	lwz r24,((JB_GPRS+10)*4)(r3)
   1.510 ++	lfd fp24,((JB_FPRS+10*2)*4)(r3)
   1.511 ++	lwz r25,((JB_GPRS+11)*4)(r3)
   1.512 ++	lfd fp25,((JB_FPRS+11*2)*4)(r3)
   1.513 ++	mtcrf 0xFF,r0
   1.514 ++	lwz r26,((JB_GPRS+12)*4)(r3)
   1.515 ++	lfd fp26,((JB_FPRS+12*2)*4)(r3)
   1.516 ++	lwz r27,((JB_GPRS+13)*4)(r3)
   1.517 ++	lfd fp27,((JB_FPRS+13*2)*4)(r3)
   1.518 ++	lwz r28,((JB_GPRS+14)*4)(r3)
   1.519 ++	lfd fp28,((JB_FPRS+14*2)*4)(r3)
   1.520 ++	lwz r29,((JB_GPRS+15)*4)(r3)
   1.521 ++	lfd fp29,((JB_FPRS+15*2)*4)(r3)
   1.522 ++	lwz r30,((JB_GPRS+16)*4)(r3)
   1.523 ++	lfd fp30,((JB_FPRS+16*2)*4)(r3)
   1.524 ++	lwz r31,((JB_GPRS+17)*4)(r3)
   1.525 ++	lfd fp31,((JB_FPRS+17*2)*4)(r3)
   1.526 ++	mr r3,r4
   1.527 ++	blr
   1.528 ++END (BP_SYM (__longjmp))
   1.529 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h
   1.530 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/bits/setjmp.h	Wed Dec 31 16:00:00 1969
   1.531 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h	Thu Jul 10 11:43:17 2003
   1.532 +@@ -0,0 +1,47 @@
   1.533 ++/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
   1.534 ++   This file is part of the GNU C Library.
   1.535 ++
   1.536 ++   The GNU C Library is free software; you can redistribute it and/or
   1.537 ++   modify it under the terms of the GNU Library General Public License as
   1.538 ++   published by the Free Software Foundation; either version 2 of the
   1.539 ++   License, or (at your option) any later version.
   1.540 ++
   1.541 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.542 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.543 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.544 ++   Library General Public License for more details.
   1.545 ++
   1.546 ++   You should have received a copy of the GNU Library General Public
   1.547 ++   License along with the GNU C Library; see the file COPYING.LIB.  If not,
   1.548 ++   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   1.549 ++   Boston, MA 02111-1307, USA.  */
   1.550 ++
   1.551 ++/* Define the machine-dependent type `jmp_buf'.  PowerPC version.  */
   1.552 ++
   1.553 ++#ifndef _SETJMP_H
   1.554 ++# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
   1.555 ++#endif
   1.556 ++
   1.557 ++/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
   1.558 ++   We use an array of 'long int' instead, to make writing the
   1.559 ++   assembler easier. Naturally, user code should not depend on
   1.560 ++   either representation. */
   1.561 ++
   1.562 ++#if defined __USE_MISC || defined _ASM
   1.563 ++# define JB_GPR1   0  /* Also known as the stack pointer */
   1.564 ++# define JB_GPR2   1
   1.565 ++# define JB_LR     2  /* The address we will return to */
   1.566 ++# define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18 in total */
   1.567 ++# define JB_CR     21 /* Condition code registers. */
   1.568 ++# define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total */
   1.569 ++# define JB_SIZE   (58*4)
   1.570 ++#endif
   1.571 ++
   1.572 ++#ifndef	_ASM
   1.573 ++typedef long int __jmp_buf[58];
   1.574 ++#endif
   1.575 ++
   1.576 ++/* Test if longjmp to JMPBUF would unwind the frame
   1.577 ++   containing a local variable at ADDRESS.  */
   1.578 ++#define _JMPBUF_UNWINDS(jmpbuf, address) \
   1.579 ++  ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
   1.580 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c
   1.581 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c	Wed Dec 31 16:00:00 1969
   1.582 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c	Thu Jul  5 21:56:01 2001
   1.583 +@@ -0,0 +1,48 @@
   1.584 ++/* Clear given exceptions in current floating-point environment.
   1.585 ++   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
   1.586 ++   This file is part of the GNU C Library.
   1.587 ++
   1.588 ++   The GNU C Library is free software; you can redistribute it and/or
   1.589 ++   modify it under the terms of the GNU Lesser General Public
   1.590 ++   License as published by the Free Software Foundation; either
   1.591 ++   version 2.1 of the License, or (at your option) any later version.
   1.592 ++
   1.593 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.594 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.595 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.596 ++   Lesser General Public License for more details.
   1.597 ++
   1.598 ++   You should have received a copy of the GNU Lesser General Public
   1.599 ++   License along with the GNU C Library; if not, write to the Free
   1.600 ++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.601 ++   02111-1307 USA.  */
   1.602 ++
   1.603 ++#include <fenv_libc.h>
   1.604 ++
   1.605 ++#undef feclearexcept
   1.606 ++int
   1.607 ++__feclearexcept (int excepts)
   1.608 ++{
   1.609 ++  fenv_union_t u;
   1.610 ++
   1.611 ++  /* Get the current state.  */
   1.612 ++  u.fenv = fegetenv_register ();
   1.613 ++
   1.614 ++  /* Clear the relevant bits.  */
   1.615 ++  u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
   1.616 ++		      | (excepts & FPSCR_STICKY_BITS));
   1.617 ++
   1.618 ++  /* Put the new state in effect.  */
   1.619 ++  fesetenv_register (u.fenv);
   1.620 ++
   1.621 ++  /* Success.  */
   1.622 ++  return 0;
   1.623 ++}
   1.624 ++
   1.625 ++#include <shlib-compat.h>
   1.626 ++#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
   1.627 ++strong_alias (__feclearexcept, __old_feclearexcept)
   1.628 ++compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
   1.629 ++#endif
   1.630 ++
   1.631 ++versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
   1.632 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c
   1.633 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fe_nomask.c	Wed Dec 31 16:00:00 1969
   1.634 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c	Thu Jul  5 21:56:01 2001
   1.635 +@@ -0,0 +1,32 @@
   1.636 ++/* Procedure definition for FE_NOMASK_ENV.
   1.637 ++   Copyright (C) 1997 Free Software Foundation, Inc.
   1.638 ++   This file is part of the GNU C Library.
   1.639 ++
   1.640 ++   The GNU C Library is free software; you can redistribute it and/or
   1.641 ++   modify it under the terms of the GNU Lesser General Public
   1.642 ++   License as published by the Free Software Foundation; either
   1.643 ++   version 2.1 of the License, or (at your option) any later version.
   1.644 ++
   1.645 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.646 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.647 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.648 ++   Lesser General Public License for more details.
   1.649 ++
   1.650 ++   You should have received a copy of the GNU Lesser General Public
   1.651 ++   License along with the GNU C Library; if not, write to the Free
   1.652 ++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.653 ++   02111-1307 USA.  */
   1.654 ++
   1.655 ++#include <fenv.h>
   1.656 ++#include <errno.h>
   1.657 ++
   1.658 ++/* This is presently a stub, until it's decided how the kernels should
   1.659 ++   support this.  */
   1.660 ++
   1.661 ++const fenv_t *
   1.662 ++__fe_nomask_env(void)
   1.663 ++{
   1.664 ++  __set_errno (ENOSYS);
   1.665 ++  return FE_ENABLED_ENV;
   1.666 ++}
   1.667 ++stub_warning (__fe_nomask_env)
   1.668 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fprrest.S glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S
   1.669 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprrest.S	Wed Dec 31 16:00:00 1969
   1.670 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S	Thu Jul  5 21:56:01 2001
   1.671 +@@ -0,0 +1,94 @@
   1.672 ++/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
   1.673 ++   This file is part of the GNU C Library.
   1.674 ++
   1.675 ++   The GNU C Library is free software; you can redistribute it and/or
   1.676 ++   modify it under the terms of the GNU Lesser General Public
   1.677 ++   License as published by the Free Software Foundation; either
   1.678 ++   version 2.1 of the License, or (at your option) any later version.
   1.679 ++
   1.680 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.681 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.682 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.683 ++   Lesser General Public License for more details.
   1.684 ++
   1.685 ++   You should have received a copy of the GNU Lesser General Public
   1.686 ++   License along with the GNU C Library; if not, write to the Free
   1.687 ++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.688 ++   02111-1307 USA.  */
   1.689 ++
   1.690 ++/*
   1.691 ++    Floating Point Registers (FPRs) restore routine
   1.692 ++*/
   1.693 ++
   1.694 ++#include <sysdep.h>
   1.695 ++
   1.696 ++ENTRY(_restfpr_all)
   1.697 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
   1.698 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
   1.699 ++C_TEXT(_restf14):
   1.700 ++C_TEXT(_restfpr_14):	lfd	fp14,-144(r1)
   1.701 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
   1.702 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
   1.703 ++C_TEXT(_restf15):
   1.704 ++C_TEXT(_restfpr_15):	lfd	fp15,-136(r1)
   1.705 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
   1.706 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
   1.707 ++C_TEXT(_restf16):
   1.708 ++C_TEXT(_restfpr_16):	lfd	fp16,-128(r1)
   1.709 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
   1.710 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
   1.711 ++C_TEXT(_restf17):
   1.712 ++C_TEXT(_restfpr_17):	lfd	fp17,-120(r1)
   1.713 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
   1.714 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
   1.715 ++C_TEXT(_restf18):
   1.716 ++C_TEXT(_restfpr_18):	lfd	fp18,-112(r1)
   1.717 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
   1.718 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
   1.719 ++C_TEXT(_restf19):
   1.720 ++C_TEXT(_restfpr_19):	lfd	fp19,-104(r1)
   1.721 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
   1.722 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
   1.723 ++C_TEXT(_restf20):
   1.724 ++C_TEXT(_restfpr_20):	lfd	fp20,-96(r1)
   1.725 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
   1.726 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
   1.727 ++C_TEXT(_restf21):
   1.728 ++C_TEXT(_restfpr_21):	lfd	fp21,-88(r1)
   1.729 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
   1.730 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
   1.731 ++C_TEXT(_restf22):
   1.732 ++C_TEXT(_restfpr_22):	lfd	fp22,-80(r1)
   1.733 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
   1.734 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
   1.735 ++C_TEXT(_restf23):
   1.736 ++C_TEXT(_restfpr_23):	lfd	fp23,-72(r1)
   1.737 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
   1.738 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
   1.739 ++C_TEXT(_restf24):
   1.740 ++C_TEXT(_restfpr_24):	lfd	fp24,-64(r1)
   1.741 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
   1.742 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
   1.743 ++C_TEXT(_restf25):
   1.744 ++C_TEXT(_restfpr_25):	lfd	fp25,-56(r1)
   1.745 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
   1.746 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
   1.747 ++C_TEXT(_restf26):
   1.748 ++C_TEXT(_restfpr_26):	lfd	fp26,-48(r1)
   1.749 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
   1.750 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
   1.751 ++C_TEXT(_restf27):
   1.752 ++C_TEXT(_restfpr_27):	lfd	fp27,-40(r1)
   1.753 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
   1.754 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
   1.755 ++C_TEXT(_restf28):
   1.756 ++C_TEXT(_restfpr_28):	lfd	fp28,-32(r1)
   1.757 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
   1.758 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
   1.759 ++C_TEXT(_restf29):
   1.760 ++C_TEXT(_restfpr_29):	lwz	r0,8(r1)	#get return address from frame
   1.761 ++			lfd	fp29,-24(r1)    #restore f29
   1.762 ++			mtlr	r0		#move return address to LR
   1.763 ++			lfd	fp30,-16(r1)	#restore f30
   1.764 ++			lfd	fp31,-8(r1)	#restore f31
   1.765 ++			blr			#return
   1.766 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fprsave.S glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S
   1.767 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprsave.S	Wed Dec 31 16:00:00 1969
   1.768 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S	Thu Jul  5 21:56:01 2001
   1.769 +@@ -0,0 +1,93 @@
   1.770 ++/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
   1.771 ++   This file is part of the GNU C Library.
   1.772 ++
   1.773 ++   The GNU C Library is free software; you can redistribute it and/or
   1.774 ++   modify it under the terms of the GNU Lesser General Public
   1.775 ++   License as published by the Free Software Foundation; either
   1.776 ++   version 2.1 of the License, or (at your option) any later version.
   1.777 ++
   1.778 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.779 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.780 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.781 ++   Lesser General Public License for more details.
   1.782 ++
   1.783 ++   You should have received a copy of the GNU Lesser General Public
   1.784 ++   License along with the GNU C Library; if not, write to the Free
   1.785 ++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.786 ++   02111-1307 USA.  */
   1.787 ++
   1.788 ++/*
   1.789 ++    Floating Point Registers (FPRs) save routine
   1.790 ++*/
   1.791 ++
   1.792 ++#include <sysdep.h>
   1.793 ++
   1.794 ++ENTRY(_savefpr_all)
   1.795 ++                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
   1.796 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
   1.797 ++C_TEXT(_savef14):
   1.798 ++C_TEXT(_savefpr_14):	stfd	fp14,-144(r1)
   1.799 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
   1.800 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
   1.801 ++C_TEXT(_savef15):
   1.802 ++C_TEXT(_savefpr_15):	stfd	fp15,-136(r1)
   1.803 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
   1.804 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
   1.805 ++C_TEXT(_savef16):
   1.806 ++C_TEXT(_savefpr_16):	stfd	fp16,-128(r1)
   1.807 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
   1.808 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
   1.809 ++C_TEXT(_savef17):
   1.810 ++C_TEXT(_savefpr_17):	stfd	fp17,-120(r1)
   1.811 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
   1.812 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
   1.813 ++C_TEXT(_savef18):
   1.814 ++C_TEXT(_savefpr_18):	stfd	fp18,-112(r1)
   1.815 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
   1.816 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
   1.817 ++C_TEXT(_savef19):
   1.818 ++C_TEXT(_savefpr_19):	stfd	fp19,-104(r1)
   1.819 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
   1.820 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
   1.821 ++C_TEXT(_savef20):
   1.822 ++C_TEXT(_savefpr_20):	stfd	fp20,-96(r1)
   1.823 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
   1.824 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
   1.825 ++C_TEXT(_savef21):
   1.826 ++C_TEXT(_savefpr_21):	stfd	fp21,-88(r1)
   1.827 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
   1.828 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
   1.829 ++C_TEXT(_savef22):
   1.830 ++C_TEXT(_savefpr_22):	stfd	fp22,-80(r1)
   1.831 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
   1.832 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
   1.833 ++C_TEXT(_savef23):
   1.834 ++C_TEXT(_savefpr_23):	stfd	fp23,-72(r1)
   1.835 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
   1.836 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
   1.837 ++C_TEXT(_savef24):
   1.838 ++C_TEXT(_savefpr_24):	stfd	fp24,-64(r1)
   1.839 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
   1.840 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
   1.841 ++C_TEXT(_savef25):
   1.842 ++C_TEXT(_savefpr_25):	stfd	fp25,-56(r1)
   1.843 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
   1.844 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
   1.845 ++C_TEXT(_savef26):
   1.846 ++C_TEXT(_savefpr_26):	stfd	fp26,-48(r1)
   1.847 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
   1.848 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
   1.849 ++C_TEXT(_savef27):
   1.850 ++C_TEXT(_savefpr_27):	stfd	fp27,-40(r1)
   1.851 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
   1.852 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
   1.853 ++C_TEXT(_savef28):
   1.854 ++C_TEXT(_savefpr_28):	stfd	fp28,-32(r1)
   1.855 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
   1.856 ++		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
   1.857 ++C_TEXT(_savef29):
   1.858 ++C_TEXT(_savefpr_29):	stfd	fp29,-24(r1)	#save f29
   1.859 ++			stfd	fp30,-16(r1)	#save f30
   1.860 ++			stfd	fp31,-8(r1)	#save f31
   1.861 ++			stw	r0,8(r1)	#save LR in callers frame
   1.862 ++			blr			#return
   1.863 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h
   1.864 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fpu_control.h	Wed Dec 31 16:00:00 1969
   1.865 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h	Thu Jul  5 21:56:01 2001
   1.866 +@@ -0,0 +1,67 @@
   1.867 ++/* FPU control word definitions.  PowerPC version.
   1.868 ++   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
   1.869 ++   This file is part of the GNU C Library.
   1.870 ++
   1.871 ++   The GNU C Library is free software; you can redistribute it and/or
   1.872 ++   modify it under the terms of the GNU Lesser General Public
   1.873 ++   License as published by the Free Software Foundation; either
   1.874 ++   version 2.1 of the License, or (at your option) any later version.
   1.875 ++
   1.876 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.877 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.878 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.879 ++   Lesser General Public License for more details.
   1.880 ++
   1.881 ++   You should have received a copy of the GNU Lesser General Public
   1.882 ++   License along with the GNU C Library; if not, write to the Free
   1.883 ++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   1.884 ++   02111-1307 USA.  */
   1.885 ++
   1.886 ++#ifndef _FPU_CONTROL_H
   1.887 ++#define _FPU_CONTROL_H
   1.888 ++
   1.889 ++/* rounding control */
   1.890 ++#define _FPU_RC_NEAREST 0x00   /* RECOMMENDED */
   1.891 ++#define _FPU_RC_DOWN    0x03
   1.892 ++#define _FPU_RC_UP      0x02
   1.893 ++#define _FPU_RC_ZERO    0x01
   1.894 ++
   1.895 ++#define _FPU_MASK_NI  0x04 /* non-ieee mode */
   1.896 ++
   1.897 ++/* masking of interrupts */
   1.898 ++#define _FPU_MASK_ZM  0x10 /* zero divide */
   1.899 ++#define _FPU_MASK_OM  0x40 /* overflow */
   1.900 ++#define _FPU_MASK_UM  0x20 /* underflow */
   1.901 ++#define _FPU_MASK_XM  0x08 /* inexact */
   1.902 ++#define _FPU_MASK_IM  0x80 /* invalid operation */
   1.903 ++
   1.904 ++#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
   1.905 ++
   1.906 ++/* The fdlibm code requires no interrupts for exceptions.  */
   1.907 ++#define _FPU_DEFAULT  0x00000000 /* Default value.  */
   1.908 ++
   1.909 ++/* IEEE:  same as above, but (some) exceptions;
   1.910 ++   we leave the 'inexact' exception off.
   1.911 ++ */
   1.912 ++#define _FPU_IEEE     0x000000f0
   1.913 ++
   1.914 ++/* Type of the control word.  */
   1.915 ++typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
   1.916 ++
   1.917 ++/* Macros for accessing the hardware control word.  */
   1.918 ++#define _FPU_GETCW(cw) ( { \
   1.919 ++  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
   1.920 ++  __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
   1.921 ++  (cw)=tmp.cw[1]; \
   1.922 ++  tmp.cw[1]; } )
   1.923 ++#define _FPU_SETCW(cw) { \
   1.924 ++  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
   1.925 ++  tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
   1.926 ++  tmp.cw[1] = cw; \
   1.927 ++  __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
   1.928 ++}
   1.929 ++
   1.930 ++/* Default control word set at startup.  */
   1.931 ++extern fpu_control_t __fpu_control;
   1.932 ++
   1.933 ++#endif /* _FPU_CONTROL_H */
   1.934 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S
   1.935 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S	Wed Dec 31 16:00:00 1969
   1.936 ++++ glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S	Thu Jul 10 11:43:44 2003
   1.937 +@@ -0,0 +1,73 @@
   1.938 ++/* setjmp for PowerPC.
   1.939 ++   Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
   1.940 ++   This file is part of the GNU C Library.
   1.941 ++
   1.942 ++   The GNU C Library is free software; you can redistribute it and/or
   1.943 ++   modify it under the terms of the GNU Library General Public License as
   1.944 ++   published by the Free Software Foundation; either version 2 of the
   1.945 ++   License, or (at your option) any later version.
   1.946 ++
   1.947 ++   The GNU C Library is distributed in the hope that it will be useful,
   1.948 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1.949 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1.950 ++   Library General Public License for more details.
   1.951 ++
   1.952 ++   You should have received a copy of the GNU Library General Public
   1.953 ++   License along with the GNU C Library; see the file COPYING.LIB.  If not,
   1.954 ++   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   1.955 ++   Boston, MA 02111-1307, USA.  */
   1.956 ++
   1.957 ++#include <sysdep.h>
   1.958 ++#define _ASM
   1.959 ++#define _SETJMP_H
   1.960 ++#include <bits/setjmp.h>
   1.961 ++#include <bp-sym.h>
   1.962 ++#include <bp-asm.h>
   1.963 ++
   1.964 ++ENTRY (BP_SYM (__sigsetjmp))
   1.965 ++	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
   1.966 ++
   1.967 ++	stw  r1,(JB_GPR1*4)(3)
   1.968 ++	mflr r0
   1.969 ++	stw  r2,(JB_GPR2*4)(3)
   1.970 ++	stw  r14,((JB_GPRS+0)*4)(3)
   1.971 ++	stfd fp14,((JB_FPRS+0*2)*4)(3)
   1.972 ++	stw  r0,(JB_LR*4)(3)
   1.973 ++	stw  r15,((JB_GPRS+1)*4)(3)
   1.974 ++	stfd fp15,((JB_FPRS+1*2)*4)(3)
   1.975 ++	mfcr r0
   1.976 ++	stw  r16,((JB_GPRS+2)*4)(3)
   1.977 ++	stfd fp16,((JB_FPRS+2*2)*4)(3)
   1.978 ++	stw  r0,(JB_CR*4)(3)
   1.979 ++	stw  r17,((JB_GPRS+3)*4)(3)
   1.980 ++	stfd fp17,((JB_FPRS+3*2)*4)(3)
   1.981 ++	stw  r18,((JB_GPRS+4)*4)(3)
   1.982 ++	stfd fp18,((JB_FPRS+4*2)*4)(3)
   1.983 ++	stw  r19,((JB_GPRS+5)*4)(3)
   1.984 ++	stfd fp19,((JB_FPRS+5*2)*4)(3)
   1.985 ++	stw  r20,((JB_GPRS+6)*4)(3)
   1.986 ++	stfd fp20,((JB_FPRS+6*2)*4)(3)
   1.987 ++	stw  r21,((JB_GPRS+7)*4)(3)
   1.988 ++	stfd fp21,((JB_FPRS+7*2)*4)(3)
   1.989 ++	stw  r22,((JB_GPRS+8)*4)(3)
   1.990 ++	stfd fp22,((JB_FPRS+8*2)*4)(3)
   1.991 ++	stw  r23,((JB_GPRS+9)*4)(3)
   1.992 ++	stfd fp23,((JB_FPRS+9*2)*4)(3)
   1.993 ++	stw  r24,((JB_GPRS+10)*4)(3)
   1.994 ++	stfd fp24,((JB_FPRS+10*2)*4)(3)
   1.995 ++	stw  r25,((JB_GPRS+11)*4)(3)
   1.996 ++	stfd fp25,((JB_FPRS+11*2)*4)(3)
   1.997 ++	stw  r26,((JB_GPRS+12)*4)(3)
   1.998 ++	stfd fp26,((JB_FPRS+12*2)*4)(3)
   1.999 ++	stw  r27,((JB_GPRS+13)*4)(3)
  1.1000 ++	stfd fp27,((JB_FPRS+13*2)*4)(3)
  1.1001 ++	stw  r28,((JB_GPRS+14)*4)(3)
  1.1002 ++	stfd fp28,((JB_FPRS+14*2)*4)(3)
  1.1003 ++	stw  r29,((JB_GPRS+15)*4)(3)
  1.1004 ++	stfd fp29,((JB_FPRS+15*2)*4)(3)
  1.1005 ++	stw  r30,((JB_GPRS+16)*4)(3)
  1.1006 ++	stfd fp30,((JB_FPRS+16*2)*4)(3)
  1.1007 ++	stw  r31,((JB_GPRS+17)*4)(3)
  1.1008 ++	stfd fp31,((JB_FPRS+17*2)*4)(3)
  1.1009 ++	b JUMPTARGET (BP_SYM (__sigjmp_save))
  1.1010 ++END (BP_SYM (__sigsetjmp))
  1.1011 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu_control.h
  1.1012 +--- glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h	Thu Jul  5 21:56:01 2001
  1.1013 ++++ glibc-2.2.5/sysdeps/powerpc/fpu_control.h	Wed Dec 31 16:00:00 1969
  1.1014 +@@ -1,67 +0,0 @@
  1.1015 +-/* FPU control word definitions.  PowerPC version.
  1.1016 +-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
  1.1017 +-   This file is part of the GNU C Library.
  1.1018 +-
  1.1019 +-   The GNU C Library is free software; you can redistribute it and/or
  1.1020 +-   modify it under the terms of the GNU Lesser General Public
  1.1021 +-   License as published by the Free Software Foundation; either
  1.1022 +-   version 2.1 of the License, or (at your option) any later version.
  1.1023 +-
  1.1024 +-   The GNU C Library is distributed in the hope that it will be useful,
  1.1025 +-   but WITHOUT ANY WARRANTY; without even the implied warranty of
  1.1026 +-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1.1027 +-   Lesser General Public License for more details.
  1.1028 +-
  1.1029 +-   You should have received a copy of the GNU Lesser General Public
  1.1030 +-   License along with the GNU C Library; if not, write to the Free
  1.1031 +-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  1.1032 +-   02111-1307 USA.  */
  1.1033 +-
  1.1034 +-#ifndef _FPU_CONTROL_H
  1.1035 +-#define _FPU_CONTROL_H
  1.1036 +-
  1.1037 +-/* rounding control */
  1.1038 +-#define _FPU_RC_NEAREST 0x00   /* RECOMMENDED */
  1.1039 +-#define _FPU_RC_DOWN    0x03
  1.1040 +-#define _FPU_RC_UP      0x02
  1.1041 +-#define _FPU_RC_ZERO    0x01
  1.1042 +-
  1.1043 +-#define _FPU_MASK_NI  0x04 /* non-ieee mode */
  1.1044 +-
  1.1045 +-/* masking of interrupts */
  1.1046 +-#define _FPU_MASK_ZM  0x10 /* zero divide */
  1.1047 +-#define _FPU_MASK_OM  0x40 /* overflow */
  1.1048 +-#define _FPU_MASK_UM  0x20 /* underflow */
  1.1049 +-#define _FPU_MASK_XM  0x08 /* inexact */
  1.1050 +-#define _FPU_MASK_IM  0x80 /* invalid operation */
  1.1051 +-
  1.1052 +-#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
  1.1053 +-
  1.1054 +-/* The fdlibm code requires no interrupts for exceptions.  */
  1.1055 +-#define _FPU_DEFAULT  0x00000000 /* Default value.  */
  1.1056 +-
  1.1057 +-/* IEEE:  same as above, but (some) exceptions;
  1.1058 +-   we leave the 'inexact' exception off.
  1.1059 +- */
  1.1060 +-#define _FPU_IEEE     0x000000f0
  1.1061 +-
  1.1062 +-/* Type of the control word.  */
  1.1063 +-typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
  1.1064 +-
  1.1065 +-/* Macros for accessing the hardware control word.  */
  1.1066 +-#define _FPU_GETCW(cw) ( { \
  1.1067 +-  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
  1.1068 +-  __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
  1.1069 +-  (cw)=tmp.cw[1]; \
  1.1070 +-  tmp.cw[1]; } )
  1.1071 +-#define _FPU_SETCW(cw) { \
  1.1072 +-  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
  1.1073 +-  tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
  1.1074 +-  tmp.cw[1] = cw; \
  1.1075 +-  __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
  1.1076 +-}
  1.1077 +-
  1.1078 +-/* Default control word set at startup.  */
  1.1079 +-extern fpu_control_t __fpu_control;
  1.1080 +-
  1.1081 +-#endif /* _FPU_CONTROL_H */
  1.1082 +diff -Naur glibc-2.2.5.old/sysdeps/powerpc/setjmp.S glibc-2.2.5/sysdeps/powerpc/setjmp.S
  1.1083 +--- glibc-2.2.5.old/sysdeps/powerpc/setjmp.S	Thu Jul  5 21:56:01 2001
  1.1084 ++++ glibc-2.2.5/sysdeps/powerpc/setjmp.S	Thu Jul 10 11:43:44 2003
  1.1085 +@@ -24,6 +24,8 @@
  1.1086 + #include <bp-sym.h>
  1.1087 + #include <bp-asm.h>
  1.1088 + 
  1.1089 ++/* The FPU stores have been removed from this file - see fpu/setjmp.S */
  1.1090 ++
  1.1091 + ENTRY (BP_SYM (__sigsetjmp))
  1.1092 + 	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
  1.1093 + 
  1.1094 +@@ -31,43 +33,25 @@
  1.1095 + 	mflr r0
  1.1096 + 	stw  r2,(JB_GPR2*4)(3)
  1.1097 + 	stw  r14,((JB_GPRS+0)*4)(3)
  1.1098 +-	stfd fp14,((JB_FPRS+0*2)*4)(3)
  1.1099 + 	stw  r0,(JB_LR*4)(3)
  1.1100 + 	stw  r15,((JB_GPRS+1)*4)(3)
  1.1101 +-	stfd fp15,((JB_FPRS+1*2)*4)(3)
  1.1102 + 	mfcr r0
  1.1103 + 	stw  r16,((JB_GPRS+2)*4)(3)
  1.1104 +-	stfd fp16,((JB_FPRS+2*2)*4)(3)
  1.1105 + 	stw  r0,(JB_CR*4)(3)
  1.1106 + 	stw  r17,((JB_GPRS+3)*4)(3)
  1.1107 +-	stfd fp17,((JB_FPRS+3*2)*4)(3)
  1.1108 + 	stw  r18,((JB_GPRS+4)*4)(3)
  1.1109 +-	stfd fp18,((JB_FPRS+4*2)*4)(3)
  1.1110 + 	stw  r19,((JB_GPRS+5)*4)(3)
  1.1111 +-	stfd fp19,((JB_FPRS+5*2)*4)(3)
  1.1112 + 	stw  r20,((JB_GPRS+6)*4)(3)
  1.1113 +-	stfd fp20,((JB_FPRS+6*2)*4)(3)
  1.1114 + 	stw  r21,((JB_GPRS+7)*4)(3)
  1.1115 +-	stfd fp21,((JB_FPRS+7*2)*4)(3)
  1.1116 + 	stw  r22,((JB_GPRS+8)*4)(3)
  1.1117 +-	stfd fp22,((JB_FPRS+8*2)*4)(3)
  1.1118 + 	stw  r23,((JB_GPRS+9)*4)(3)
  1.1119 +-	stfd fp23,((JB_FPRS+9*2)*4)(3)
  1.1120 + 	stw  r24,((JB_GPRS+10)*4)(3)
  1.1121 +-	stfd fp24,((JB_FPRS+10*2)*4)(3)
  1.1122 + 	stw  r25,((JB_GPRS+11)*4)(3)
  1.1123 +-	stfd fp25,((JB_FPRS+11*2)*4)(3)
  1.1124 + 	stw  r26,((JB_GPRS+12)*4)(3)
  1.1125 +-	stfd fp26,((JB_FPRS+12*2)*4)(3)
  1.1126 + 	stw  r27,((JB_GPRS+13)*4)(3)
  1.1127 +-	stfd fp27,((JB_FPRS+13*2)*4)(3)
  1.1128 + 	stw  r28,((JB_GPRS+14)*4)(3)
  1.1129 +-	stfd fp28,((JB_FPRS+14*2)*4)(3)
  1.1130 + 	stw  r29,((JB_GPRS+15)*4)(3)
  1.1131 +-	stfd fp29,((JB_FPRS+15*2)*4)(3)
  1.1132 + 	stw  r30,((JB_GPRS+16)*4)(3)
  1.1133 +-	stfd fp30,((JB_FPRS+16*2)*4)(3)
  1.1134 + 	stw  r31,((JB_GPRS+17)*4)(3)
  1.1135 +-	stfd fp31,((JB_FPRS+17*2)*4)(3)
  1.1136 + 	b JUMPTARGET (BP_SYM (__sigjmp_save))
  1.1137 + END (BP_SYM (__sigsetjmp))