patches/glibc/2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
yann@1
     1
# See http://sources.redhat.com/ml/crossgcc/2002-05/msg00132.html
yann@1
     2
# This patch is taken directly from the Montavista Hard Hat Linux 2.0 source RPMs,
yann@1
     3
# but has been rediffed against glibc-2.2.5
yann@1
     4
yann@1
     5
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Dist glibc-2.2.5/sysdeps/powerpc/Dist
yann@1
     6
--- glibc-2.2.5.old/sysdeps/powerpc/Dist	Fri Jun 30 23:30:21 2000
yann@1
     7
+++ glibc-2.2.5/sysdeps/powerpc/Dist	Thu Jul 10 11:43:17 2003
yann@1
     8
@@ -1,9 +1,6 @@
yann@1
     9
 dl-machine.c
yann@1
    10
 dl-start.S
yann@1
    11
 ppc-mcount.S
yann@1
    12
-fe_nomask.c
yann@1
    13
-fprrest.S
yann@1
    14
-fprsave.S
yann@1
    15
 gprsave1.S
yann@1
    16
 gprsave0.S
yann@1
    17
 gprrest1.S
yann@1
    18
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Makefile glibc-2.2.5/sysdeps/powerpc/Makefile
yann@1
    19
--- glibc-2.2.5.old/sysdeps/powerpc/Makefile	Mon Nov 27 15:32:47 2000
yann@1
    20
+++ glibc-2.2.5/sysdeps/powerpc/Makefile	Thu Jul 10 11:43:17 2003
yann@1
    21
@@ -3,16 +3,12 @@
yann@1
    22
 +cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc
yann@1
    23
 asm-CPPFLAGS += -Wa,-mppc
yann@1
    24
 
yann@1
    25
-ifeq ($(subdir),math)
yann@1
    26
-libm-support += fenv_const fe_nomask
yann@1
    27
-endif
yann@1
    28
-
yann@1
    29
 ifeq ($(subdir),gmon)
yann@1
    30
 sysdep_routines += ppc-mcount
yann@1
    31
 endif
yann@1
    32
 
yann@1
    33
 ifeq ($(subdir),misc)
yann@1
    34
-sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 fprsave fprrest
yann@1
    35
+sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
yann@1
    36
 endif
yann@1
    37
 
yann@1
    38
 # On PPC, -fpic works until the GOT contains 2^15 bytes, and possibly
yann@1
    39
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Versions glibc-2.2.5/sysdeps/powerpc/Versions
yann@1
    40
--- glibc-2.2.5.old/sysdeps/powerpc/Versions	Mon Feb 28 13:27:57 2000
yann@1
    41
+++ glibc-2.2.5/sysdeps/powerpc/Versions	Thu Jul 10 11:43:17 2003
yann@1
    42
@@ -1,8 +1,4 @@
yann@1
    43
 libm {
yann@1
    44
-  GLIBC_2.1 {
yann@1
    45
-    # symbols used in macros from sysdeps/powerpc/bits/fenv.h
yann@1
    46
-    __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
yann@1
    47
-  }
yann@1
    48
   GLIBC_2.2 {
yann@1
    49
     # Special functions to save and restore registers used by the
yann@1
    50
     # runtime libraries.
yann@1
    51
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S glibc-2.2.5/sysdeps/powerpc/__longjmp.S
yann@1
    52
--- glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S	Thu Jul  5 21:56:01 2001
yann@1
    53
+++ glibc-2.2.5/sysdeps/powerpc/__longjmp.S	Thu Jul 10 11:43:17 2003
yann@1
    54
@@ -24,6 +24,8 @@
yann@1
    55
 #include <bp-sym.h>
yann@1
    56
 #include <bp-asm.h>
yann@1
    57
 
yann@1
    58
+/* The FPU loads have been removed from this file - see fpu/__longjmp.S */
yann@1
    59
+
yann@1
    60
 ENTRY (BP_SYM (__longjmp))
yann@1
    61
 	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
yann@1
    62
 
yann@1
    63
@@ -31,44 +33,26 @@
yann@1
    64
 	lwz r2,(JB_GPR2*4)(r3)
yann@1
    65
 	lwz r0,(JB_LR*4)(r3)
yann@1
    66
 	lwz r14,((JB_GPRS+0)*4)(r3)
yann@1
    67
-	lfd fp14,((JB_FPRS+0*2)*4)(r3)
yann@1
    68
 	lwz r15,((JB_GPRS+1)*4)(r3)
yann@1
    69
-	lfd fp15,((JB_FPRS+1*2)*4)(r3)
yann@1
    70
 	lwz r16,((JB_GPRS+2)*4)(r3)
yann@1
    71
-	lfd fp16,((JB_FPRS+2*2)*4)(r3)
yann@1
    72
 	lwz r17,((JB_GPRS+3)*4)(r3)
yann@1
    73
-	lfd fp17,((JB_FPRS+3*2)*4)(r3)
yann@1
    74
 	lwz r18,((JB_GPRS+4)*4)(r3)
yann@1
    75
-	lfd fp18,((JB_FPRS+4*2)*4)(r3)
yann@1
    76
 	lwz r19,((JB_GPRS+5)*4)(r3)
yann@1
    77
-	lfd fp19,((JB_FPRS+5*2)*4)(r3)
yann@1
    78
 	lwz r20,((JB_GPRS+6)*4)(r3)
yann@1
    79
-	lfd fp20,((JB_FPRS+6*2)*4)(r3)
yann@1
    80
 	mtlr r0
yann@1
    81
 	lwz r21,((JB_GPRS+7)*4)(r3)
yann@1
    82
-	lfd fp21,((JB_FPRS+7*2)*4)(r3)
yann@1
    83
 	lwz r22,((JB_GPRS+8)*4)(r3)
yann@1
    84
-	lfd fp22,((JB_FPRS+8*2)*4)(r3)
yann@1
    85
 	lwz r0,(JB_CR*4)(r3)
yann@1
    86
 	lwz r23,((JB_GPRS+9)*4)(r3)
yann@1
    87
-	lfd fp23,((JB_FPRS+9*2)*4)(r3)
yann@1
    88
 	lwz r24,((JB_GPRS+10)*4)(r3)
yann@1
    89
-	lfd fp24,((JB_FPRS+10*2)*4)(r3)
yann@1
    90
 	lwz r25,((JB_GPRS+11)*4)(r3)
yann@1
    91
-	lfd fp25,((JB_FPRS+11*2)*4)(r3)
yann@1
    92
 	mtcrf 0xFF,r0
yann@1
    93
 	lwz r26,((JB_GPRS+12)*4)(r3)
yann@1
    94
-	lfd fp26,((JB_FPRS+12*2)*4)(r3)
yann@1
    95
 	lwz r27,((JB_GPRS+13)*4)(r3)
yann@1
    96
-	lfd fp27,((JB_FPRS+13*2)*4)(r3)
yann@1
    97
 	lwz r28,((JB_GPRS+14)*4)(r3)
yann@1
    98
-	lfd fp28,((JB_FPRS+14*2)*4)(r3)
yann@1
    99
 	lwz r29,((JB_GPRS+15)*4)(r3)
yann@1
   100
-	lfd fp29,((JB_FPRS+15*2)*4)(r3)
yann@1
   101
 	lwz r30,((JB_GPRS+16)*4)(r3)
yann@1
   102
-	lfd fp30,((JB_FPRS+16*2)*4)(r3)
yann@1
   103
 	lwz r31,((JB_GPRS+17)*4)(r3)
yann@1
   104
-	lfd fp31,((JB_FPRS+17*2)*4)(r3)
yann@1
   105
 	mr r3,r4
yann@1
   106
 	blr
yann@1
   107
 END (BP_SYM (__longjmp))
yann@1
   108
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h
yann@1
   109
--- glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h	Thu Jul  5 21:56:01 2001
yann@1
   110
+++ glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h	Thu Jul 10 11:43:17 2003
yann@1
   111
@@ -17,6 +17,7 @@
yann@1
   112
    02111-1307 USA.  */
yann@1
   113
 
yann@1
   114
 /* Define the machine-dependent type `jmp_buf'.  PowerPC version.  */
yann@1
   115
+/* For processors without floating point. */
yann@1
   116
 
yann@1
   117
 #ifndef _SETJMP_H
yann@1
   118
 # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
yann@1
   119
@@ -33,12 +34,11 @@
yann@1
   120
 # define JB_LR     2  /* The address we will return to */
yann@1
   121
 # define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18 in total */
yann@1
   122
 # define JB_CR     21 /* Condition code registers. */
yann@1
   123
-# define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total */
yann@1
   124
-# define JB_SIZE   (58*4)
yann@1
   125
+# define JB_SIZE   (22*4)
yann@1
   126
 #endif
yann@1
   127
 
yann@1
   128
 #ifndef	_ASM
yann@1
   129
-typedef long int __jmp_buf[58];
yann@1
   130
+typedef long int __jmp_buf[22];
yann@1
   131
 #endif
yann@1
   132
 
yann@1
   133
 /* Test if longjmp to JMPBUF would unwind the frame
yann@1
   134
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c
yann@1
   135
--- glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c	Thu Jul  5 21:56:01 2001
yann@1
   136
+++ glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c	Wed Dec 31 16:00:00 1969
yann@1
   137
@@ -1,48 +0,0 @@
yann@1
   138
-/* Clear given exceptions in current floating-point environment.
yann@1
   139
-   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
yann@1
   140
-   This file is part of the GNU C Library.
yann@1
   141
-
yann@1
   142
-   The GNU C Library is free software; you can redistribute it and/or
yann@1
   143
-   modify it under the terms of the GNU Lesser General Public
yann@1
   144
-   License as published by the Free Software Foundation; either
yann@1
   145
-   version 2.1 of the License, or (at your option) any later version.
yann@1
   146
-
yann@1
   147
-   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   148
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   149
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   150
-   Lesser General Public License for more details.
yann@1
   151
-
yann@1
   152
-   You should have received a copy of the GNU Lesser General Public
yann@1
   153
-   License along with the GNU C Library; if not, write to the Free
yann@1
   154
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   155
-   02111-1307 USA.  */
yann@1
   156
-
yann@1
   157
-#include <fenv_libc.h>
yann@1
   158
-
yann@1
   159
-#undef feclearexcept
yann@1
   160
-int
yann@1
   161
-__feclearexcept (int excepts)
yann@1
   162
-{
yann@1
   163
-  fenv_union_t u;
yann@1
   164
-
yann@1
   165
-  /* Get the current state.  */
yann@1
   166
-  u.fenv = fegetenv_register ();
yann@1
   167
-
yann@1
   168
-  /* Clear the relevant bits.  */
yann@1
   169
-  u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
yann@1
   170
-		      | (excepts & FPSCR_STICKY_BITS));
yann@1
   171
-
yann@1
   172
-  /* Put the new state in effect.  */
yann@1
   173
-  fesetenv_register (u.fenv);
yann@1
   174
-
yann@1
   175
-  /* Success.  */
yann@1
   176
-  return 0;
yann@1
   177
-}
yann@1
   178
-
yann@1
   179
-#include <shlib-compat.h>
yann@1
   180
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
yann@1
   181
-strong_alias (__feclearexcept, __old_feclearexcept)
yann@1
   182
-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
yann@1
   183
-#endif
yann@1
   184
-
yann@1
   185
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
yann@1
   186
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fe_nomask.c
yann@1
   187
--- glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c	Thu Jul  5 21:56:01 2001
yann@1
   188
+++ glibc-2.2.5/sysdeps/powerpc/fe_nomask.c	Wed Dec 31 16:00:00 1969
yann@1
   189
@@ -1,32 +0,0 @@
yann@1
   190
-/* Procedure definition for FE_NOMASK_ENV.
yann@1
   191
-   Copyright (C) 1997 Free Software Foundation, Inc.
yann@1
   192
-   This file is part of the GNU C Library.
yann@1
   193
-
yann@1
   194
-   The GNU C Library is free software; you can redistribute it and/or
yann@1
   195
-   modify it under the terms of the GNU Lesser General Public
yann@1
   196
-   License as published by the Free Software Foundation; either
yann@1
   197
-   version 2.1 of the License, or (at your option) any later version.
yann@1
   198
-
yann@1
   199
-   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   200
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   201
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   202
-   Lesser General Public License for more details.
yann@1
   203
-
yann@1
   204
-   You should have received a copy of the GNU Lesser General Public
yann@1
   205
-   License along with the GNU C Library; if not, write to the Free
yann@1
   206
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   207
-   02111-1307 USA.  */
yann@1
   208
-
yann@1
   209
-#include <fenv.h>
yann@1
   210
-#include <errno.h>
yann@1
   211
-
yann@1
   212
-/* This is presently a stub, until it's decided how the kernels should
yann@1
   213
-   support this.  */
yann@1
   214
-
yann@1
   215
-const fenv_t *
yann@1
   216
-__fe_nomask_env(void)
yann@1
   217
-{
yann@1
   218
-  __set_errno (ENOSYS);
yann@1
   219
-  return FE_ENABLED_ENV;
yann@1
   220
-}
yann@1
   221
-stub_warning (__fe_nomask_env)
yann@1
   222
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprrest.S glibc-2.2.5/sysdeps/powerpc/fprrest.S
yann@1
   223
--- glibc-2.2.5.old/sysdeps/powerpc/fprrest.S	Thu Jul  5 21:56:01 2001
yann@1
   224
+++ glibc-2.2.5/sysdeps/powerpc/fprrest.S	Wed Dec 31 16:00:00 1969
yann@1
   225
@@ -1,94 +0,0 @@
yann@1
   226
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
yann@1
   227
-   This file is part of the GNU C Library.
yann@1
   228
-
yann@1
   229
-   The GNU C Library is free software; you can redistribute it and/or
yann@1
   230
-   modify it under the terms of the GNU Lesser General Public
yann@1
   231
-   License as published by the Free Software Foundation; either
yann@1
   232
-   version 2.1 of the License, or (at your option) any later version.
yann@1
   233
-
yann@1
   234
-   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   235
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   236
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   237
-   Lesser General Public License for more details.
yann@1
   238
-
yann@1
   239
-   You should have received a copy of the GNU Lesser General Public
yann@1
   240
-   License along with the GNU C Library; if not, write to the Free
yann@1
   241
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   242
-   02111-1307 USA.  */
yann@1
   243
-
yann@1
   244
-/*
yann@1
   245
-    Floating Point Registers (FPRs) restore routine
yann@1
   246
-*/
yann@1
   247
-
yann@1
   248
-#include <sysdep.h>
yann@1
   249
-
yann@1
   250
-ENTRY(_restfpr_all)
yann@1
   251
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
yann@1
   252
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
yann@1
   253
-C_TEXT(_restf14):
yann@1
   254
-C_TEXT(_restfpr_14):	lfd	fp14,-144(r1)
yann@1
   255
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
yann@1
   256
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
yann@1
   257
-C_TEXT(_restf15):
yann@1
   258
-C_TEXT(_restfpr_15):	lfd	fp15,-136(r1)
yann@1
   259
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
yann@1
   260
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
yann@1
   261
-C_TEXT(_restf16):
yann@1
   262
-C_TEXT(_restfpr_16):	lfd	fp16,-128(r1)
yann@1
   263
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
yann@1
   264
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
yann@1
   265
-C_TEXT(_restf17):
yann@1
   266
-C_TEXT(_restfpr_17):	lfd	fp17,-120(r1)
yann@1
   267
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
yann@1
   268
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
yann@1
   269
-C_TEXT(_restf18):
yann@1
   270
-C_TEXT(_restfpr_18):	lfd	fp18,-112(r1)
yann@1
   271
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
yann@1
   272
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
yann@1
   273
-C_TEXT(_restf19):
yann@1
   274
-C_TEXT(_restfpr_19):	lfd	fp19,-104(r1)
yann@1
   275
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
yann@1
   276
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
yann@1
   277
-C_TEXT(_restf20):
yann@1
   278
-C_TEXT(_restfpr_20):	lfd	fp20,-96(r1)
yann@1
   279
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
yann@1
   280
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
yann@1
   281
-C_TEXT(_restf21):
yann@1
   282
-C_TEXT(_restfpr_21):	lfd	fp21,-88(r1)
yann@1
   283
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
yann@1
   284
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
yann@1
   285
-C_TEXT(_restf22):
yann@1
   286
-C_TEXT(_restfpr_22):	lfd	fp22,-80(r1)
yann@1
   287
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
yann@1
   288
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
yann@1
   289
-C_TEXT(_restf23):
yann@1
   290
-C_TEXT(_restfpr_23):	lfd	fp23,-72(r1)
yann@1
   291
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
yann@1
   292
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
yann@1
   293
-C_TEXT(_restf24):
yann@1
   294
-C_TEXT(_restfpr_24):	lfd	fp24,-64(r1)
yann@1
   295
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
yann@1
   296
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
yann@1
   297
-C_TEXT(_restf25):
yann@1
   298
-C_TEXT(_restfpr_25):	lfd	fp25,-56(r1)
yann@1
   299
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
yann@1
   300
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
yann@1
   301
-C_TEXT(_restf26):
yann@1
   302
-C_TEXT(_restfpr_26):	lfd	fp26,-48(r1)
yann@1
   303
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
yann@1
   304
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
yann@1
   305
-C_TEXT(_restf27):
yann@1
   306
-C_TEXT(_restfpr_27):	lfd	fp27,-40(r1)
yann@1
   307
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
yann@1
   308
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
yann@1
   309
-C_TEXT(_restf28):
yann@1
   310
-C_TEXT(_restfpr_28):	lfd	fp28,-32(r1)
yann@1
   311
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
yann@1
   312
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
yann@1
   313
-C_TEXT(_restf29):
yann@1
   314
-C_TEXT(_restfpr_29):	lwz	r0,8(r1)	#get return address from frame
yann@1
   315
-			lfd	fp29,-24(r1)    #restore f29
yann@1
   316
-			mtlr	r0		#move return address to LR
yann@1
   317
-			lfd	fp30,-16(r1)	#restore f30
yann@1
   318
-			lfd	fp31,-8(r1)	#restore f31
yann@1
   319
-			blr			#return
yann@1
   320
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprsave.S glibc-2.2.5/sysdeps/powerpc/fprsave.S
yann@1
   321
--- glibc-2.2.5.old/sysdeps/powerpc/fprsave.S	Thu Jul  5 21:56:01 2001
yann@1
   322
+++ glibc-2.2.5/sysdeps/powerpc/fprsave.S	Wed Dec 31 16:00:00 1969
yann@1
   323
@@ -1,93 +0,0 @@
yann@1
   324
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
yann@1
   325
-   This file is part of the GNU C Library.
yann@1
   326
-
yann@1
   327
-   The GNU C Library is free software; you can redistribute it and/or
yann@1
   328
-   modify it under the terms of the GNU Lesser General Public
yann@1
   329
-   License as published by the Free Software Foundation; either
yann@1
   330
-   version 2.1 of the License, or (at your option) any later version.
yann@1
   331
-
yann@1
   332
-   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   333
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   334
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   335
-   Lesser General Public License for more details.
yann@1
   336
-
yann@1
   337
-   You should have received a copy of the GNU Lesser General Public
yann@1
   338
-   License along with the GNU C Library; if not, write to the Free
yann@1
   339
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   340
-   02111-1307 USA.  */
yann@1
   341
-
yann@1
   342
-/*
yann@1
   343
-    Floating Point Registers (FPRs) save routine
yann@1
   344
-*/
yann@1
   345
-
yann@1
   346
-#include <sysdep.h>
yann@1
   347
-
yann@1
   348
-ENTRY(_savefpr_all)
yann@1
   349
-                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
yann@1
   350
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
yann@1
   351
-C_TEXT(_savef14):
yann@1
   352
-C_TEXT(_savefpr_14):	stfd	fp14,-144(r1)
yann@1
   353
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
yann@1
   354
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
yann@1
   355
-C_TEXT(_savef15):
yann@1
   356
-C_TEXT(_savefpr_15):	stfd	fp15,-136(r1)
yann@1
   357
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
yann@1
   358
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
yann@1
   359
-C_TEXT(_savef16):
yann@1
   360
-C_TEXT(_savefpr_16):	stfd	fp16,-128(r1)
yann@1
   361
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
yann@1
   362
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
yann@1
   363
-C_TEXT(_savef17):
yann@1
   364
-C_TEXT(_savefpr_17):	stfd	fp17,-120(r1)
yann@1
   365
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
yann@1
   366
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
yann@1
   367
-C_TEXT(_savef18):
yann@1
   368
-C_TEXT(_savefpr_18):	stfd	fp18,-112(r1)
yann@1
   369
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
yann@1
   370
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
yann@1
   371
-C_TEXT(_savef19):
yann@1
   372
-C_TEXT(_savefpr_19):	stfd	fp19,-104(r1)
yann@1
   373
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
yann@1
   374
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
yann@1
   375
-C_TEXT(_savef20):
yann@1
   376
-C_TEXT(_savefpr_20):	stfd	fp20,-96(r1)
yann@1
   377
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
yann@1
   378
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
yann@1
   379
-C_TEXT(_savef21):
yann@1
   380
-C_TEXT(_savefpr_21):	stfd	fp21,-88(r1)
yann@1
   381
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
yann@1
   382
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
yann@1
   383
-C_TEXT(_savef22):
yann@1
   384
-C_TEXT(_savefpr_22):	stfd	fp22,-80(r1)
yann@1
   385
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
yann@1
   386
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
yann@1
   387
-C_TEXT(_savef23):
yann@1
   388
-C_TEXT(_savefpr_23):	stfd	fp23,-72(r1)
yann@1
   389
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
yann@1
   390
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
yann@1
   391
-C_TEXT(_savef24):
yann@1
   392
-C_TEXT(_savefpr_24):	stfd	fp24,-64(r1)
yann@1
   393
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
yann@1
   394
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
yann@1
   395
-C_TEXT(_savef25):
yann@1
   396
-C_TEXT(_savefpr_25):	stfd	fp25,-56(r1)
yann@1
   397
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
yann@1
   398
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
yann@1
   399
-C_TEXT(_savef26):
yann@1
   400
-C_TEXT(_savefpr_26):	stfd	fp26,-48(r1)
yann@1
   401
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
yann@1
   402
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
yann@1
   403
-C_TEXT(_savef27):
yann@1
   404
-C_TEXT(_savefpr_27):	stfd	fp27,-40(r1)
yann@1
   405
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
yann@1
   406
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
yann@1
   407
-C_TEXT(_savef28):
yann@1
   408
-C_TEXT(_savefpr_28):	stfd	fp28,-32(r1)
yann@1
   409
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
yann@1
   410
-		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
yann@1
   411
-C_TEXT(_savef29):
yann@1
   412
-C_TEXT(_savefpr_29):	stfd	fp29,-24(r1)	#save f29
yann@1
   413
-			stfd	fp30,-16(r1)	#save f30
yann@1
   414
-			stfd	fp31,-8(r1)	#save f31
yann@1
   415
-			stw	r0,8(r1)	#save LR in callers frame
yann@1
   416
-			blr			#return
yann@1
   417
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist glibc-2.2.5/sysdeps/powerpc/fpu/Dist
yann@1
   418
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist	Wed Jan 26 17:48:02 2000
yann@1
   419
+++ glibc-2.2.5/sysdeps/powerpc/fpu/Dist	Thu Jul 10 11:43:17 2003
yann@1
   420
@@ -1,3 +1,6 @@
yann@1
   421
+fe_nomask.c
yann@1
   422
+fprrest.S
yann@1
   423
+fprsave.S
yann@1
   424
 fenv_const.c
yann@1
   425
 fenv_libc.h
yann@1
   426
 t_sqrt.c
yann@1
   427
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile glibc-2.2.5/sysdeps/powerpc/fpu/Makefile
yann@1
   428
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile	Mon Oct 11 15:29:00 1999
yann@1
   429
+++ glibc-2.2.5/sysdeps/powerpc/fpu/Makefile	Thu Jul 10 11:43:17 2003
yann@1
   430
@@ -1,3 +1,7 @@
yann@1
   431
 ifeq ($(subdir),math)
yann@1
   432
 libm-support += fenv_const fe_nomask t_sqrt
yann@1
   433
 endif
yann@1
   434
+
yann@1
   435
+ifeq ($(subdir),misc)
yann@1
   436
+sysdep_routines += fprsave fprrest
yann@1
   437
+endif
yann@1
   438
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions glibc-2.2.5/sysdeps/powerpc/fpu/Versions
yann@1
   439
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions	Wed Dec 31 16:00:00 1969
yann@1
   440
+++ glibc-2.2.5/sysdeps/powerpc/fpu/Versions	Thu Jul 10 11:43:17 2003
yann@1
   441
@@ -0,0 +1,6 @@
yann@1
   442
+libm {
yann@1
   443
+  GLIBC_2.1 {
yann@1
   444
+    # symbols used in macros from sysdeps/powerpc/bits/fenv.h
yann@1
   445
+    __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
yann@1
   446
+  }
yann@1
   447
+}
yann@1
   448
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S
yann@1
   449
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S	Wed Dec 31 16:00:00 1969
yann@1
   450
+++ glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S	Thu Jul 10 11:43:17 2003
yann@1
   451
@@ -0,0 +1,74 @@
yann@1
   452
+/* longjmp for PowerPC.
yann@1
   453
+   Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
yann@1
   454
+   This file is part of the GNU C Library.
yann@1
   455
+
yann@1
   456
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   457
+   modify it under the terms of the GNU Library General Public License as
yann@1
   458
+   published by the Free Software Foundation; either version 2 of the
yann@1
   459
+   License, or (at your option) any later version.
yann@1
   460
+
yann@1
   461
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   462
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   463
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   464
+   Library General Public License for more details.
yann@1
   465
+
yann@1
   466
+   You should have received a copy of the GNU Library General Public
yann@1
   467
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
yann@1
   468
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
yann@1
   469
+   Boston, MA 02111-1307, USA.  */
yann@1
   470
+
yann@1
   471
+#include <sysdep.h>
yann@1
   472
+#define _ASM
yann@1
   473
+#define _SETJMP_H
yann@1
   474
+#include <bits/setjmp.h>
yann@1
   475
+#include <bp-sym.h>
yann@1
   476
+#include <bp-asm.h>
yann@1
   477
+
yann@1
   478
+ENTRY (BP_SYM (__longjmp))
yann@1
   479
+	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
yann@1
   480
+
yann@1
   481
+	lwz r1,(JB_GPR1*4)(r3)
yann@1
   482
+	lwz r2,(JB_GPR2*4)(r3)
yann@1
   483
+	lwz r0,(JB_LR*4)(r3)
yann@1
   484
+	lwz r14,((JB_GPRS+0)*4)(r3)
yann@1
   485
+	lfd fp14,((JB_FPRS+0*2)*4)(r3)
yann@1
   486
+	lwz r15,((JB_GPRS+1)*4)(r3)
yann@1
   487
+	lfd fp15,((JB_FPRS+1*2)*4)(r3)
yann@1
   488
+	lwz r16,((JB_GPRS+2)*4)(r3)
yann@1
   489
+	lfd fp16,((JB_FPRS+2*2)*4)(r3)
yann@1
   490
+	lwz r17,((JB_GPRS+3)*4)(r3)
yann@1
   491
+	lfd fp17,((JB_FPRS+3*2)*4)(r3)
yann@1
   492
+	lwz r18,((JB_GPRS+4)*4)(r3)
yann@1
   493
+	lfd fp18,((JB_FPRS+4*2)*4)(r3)
yann@1
   494
+	lwz r19,((JB_GPRS+5)*4)(r3)
yann@1
   495
+	lfd fp19,((JB_FPRS+5*2)*4)(r3)
yann@1
   496
+	lwz r20,((JB_GPRS+6)*4)(r3)
yann@1
   497
+	lfd fp20,((JB_FPRS+6*2)*4)(r3)
yann@1
   498
+	mtlr r0
yann@1
   499
+	lwz r21,((JB_GPRS+7)*4)(r3)
yann@1
   500
+	lfd fp21,((JB_FPRS+7*2)*4)(r3)
yann@1
   501
+	lwz r22,((JB_GPRS+8)*4)(r3)
yann@1
   502
+	lfd fp22,((JB_FPRS+8*2)*4)(r3)
yann@1
   503
+	lwz r0,(JB_CR*4)(r3)
yann@1
   504
+	lwz r23,((JB_GPRS+9)*4)(r3)
yann@1
   505
+	lfd fp23,((JB_FPRS+9*2)*4)(r3)
yann@1
   506
+	lwz r24,((JB_GPRS+10)*4)(r3)
yann@1
   507
+	lfd fp24,((JB_FPRS+10*2)*4)(r3)
yann@1
   508
+	lwz r25,((JB_GPRS+11)*4)(r3)
yann@1
   509
+	lfd fp25,((JB_FPRS+11*2)*4)(r3)
yann@1
   510
+	mtcrf 0xFF,r0
yann@1
   511
+	lwz r26,((JB_GPRS+12)*4)(r3)
yann@1
   512
+	lfd fp26,((JB_FPRS+12*2)*4)(r3)
yann@1
   513
+	lwz r27,((JB_GPRS+13)*4)(r3)
yann@1
   514
+	lfd fp27,((JB_FPRS+13*2)*4)(r3)
yann@1
   515
+	lwz r28,((JB_GPRS+14)*4)(r3)
yann@1
   516
+	lfd fp28,((JB_FPRS+14*2)*4)(r3)
yann@1
   517
+	lwz r29,((JB_GPRS+15)*4)(r3)
yann@1
   518
+	lfd fp29,((JB_FPRS+15*2)*4)(r3)
yann@1
   519
+	lwz r30,((JB_GPRS+16)*4)(r3)
yann@1
   520
+	lfd fp30,((JB_FPRS+16*2)*4)(r3)
yann@1
   521
+	lwz r31,((JB_GPRS+17)*4)(r3)
yann@1
   522
+	lfd fp31,((JB_FPRS+17*2)*4)(r3)
yann@1
   523
+	mr r3,r4
yann@1
   524
+	blr
yann@1
   525
+END (BP_SYM (__longjmp))
yann@1
   526
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h
yann@1
   527
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/bits/setjmp.h	Wed Dec 31 16:00:00 1969
yann@1
   528
+++ glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h	Thu Jul 10 11:43:17 2003
yann@1
   529
@@ -0,0 +1,47 @@
yann@1
   530
+/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
yann@1
   531
+   This file is part of the GNU C Library.
yann@1
   532
+
yann@1
   533
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   534
+   modify it under the terms of the GNU Library General Public License as
yann@1
   535
+   published by the Free Software Foundation; either version 2 of the
yann@1
   536
+   License, or (at your option) any later version.
yann@1
   537
+
yann@1
   538
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   539
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   540
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   541
+   Library General Public License for more details.
yann@1
   542
+
yann@1
   543
+   You should have received a copy of the GNU Library General Public
yann@1
   544
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
yann@1
   545
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
yann@1
   546
+   Boston, MA 02111-1307, USA.  */
yann@1
   547
+
yann@1
   548
+/* Define the machine-dependent type `jmp_buf'.  PowerPC version.  */
yann@1
   549
+
yann@1
   550
+#ifndef _SETJMP_H
yann@1
   551
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
yann@1
   552
+#endif
yann@1
   553
+
yann@1
   554
+/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
yann@1
   555
+   We use an array of 'long int' instead, to make writing the
yann@1
   556
+   assembler easier. Naturally, user code should not depend on
yann@1
   557
+   either representation. */
yann@1
   558
+
yann@1
   559
+#if defined __USE_MISC || defined _ASM
yann@1
   560
+# define JB_GPR1   0  /* Also known as the stack pointer */
yann@1
   561
+# define JB_GPR2   1
yann@1
   562
+# define JB_LR     2  /* The address we will return to */
yann@1
   563
+# define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18 in total */
yann@1
   564
+# define JB_CR     21 /* Condition code registers. */
yann@1
   565
+# define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total */
yann@1
   566
+# define JB_SIZE   (58*4)
yann@1
   567
+#endif
yann@1
   568
+
yann@1
   569
+#ifndef	_ASM
yann@1
   570
+typedef long int __jmp_buf[58];
yann@1
   571
+#endif
yann@1
   572
+
yann@1
   573
+/* Test if longjmp to JMPBUF would unwind the frame
yann@1
   574
+   containing a local variable at ADDRESS.  */
yann@1
   575
+#define _JMPBUF_UNWINDS(jmpbuf, address) \
yann@1
   576
+  ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
yann@1
   577
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c
yann@1
   578
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c	Wed Dec 31 16:00:00 1969
yann@1
   579
+++ glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c	Thu Jul  5 21:56:01 2001
yann@1
   580
@@ -0,0 +1,48 @@
yann@1
   581
+/* Clear given exceptions in current floating-point environment.
yann@1
   582
+   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
yann@1
   583
+   This file is part of the GNU C Library.
yann@1
   584
+
yann@1
   585
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   586
+   modify it under the terms of the GNU Lesser General Public
yann@1
   587
+   License as published by the Free Software Foundation; either
yann@1
   588
+   version 2.1 of the License, or (at your option) any later version.
yann@1
   589
+
yann@1
   590
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   591
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   592
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   593
+   Lesser General Public License for more details.
yann@1
   594
+
yann@1
   595
+   You should have received a copy of the GNU Lesser General Public
yann@1
   596
+   License along with the GNU C Library; if not, write to the Free
yann@1
   597
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   598
+   02111-1307 USA.  */
yann@1
   599
+
yann@1
   600
+#include <fenv_libc.h>
yann@1
   601
+
yann@1
   602
+#undef feclearexcept
yann@1
   603
+int
yann@1
   604
+__feclearexcept (int excepts)
yann@1
   605
+{
yann@1
   606
+  fenv_union_t u;
yann@1
   607
+
yann@1
   608
+  /* Get the current state.  */
yann@1
   609
+  u.fenv = fegetenv_register ();
yann@1
   610
+
yann@1
   611
+  /* Clear the relevant bits.  */
yann@1
   612
+  u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
yann@1
   613
+		      | (excepts & FPSCR_STICKY_BITS));
yann@1
   614
+
yann@1
   615
+  /* Put the new state in effect.  */
yann@1
   616
+  fesetenv_register (u.fenv);
yann@1
   617
+
yann@1
   618
+  /* Success.  */
yann@1
   619
+  return 0;
yann@1
   620
+}
yann@1
   621
+
yann@1
   622
+#include <shlib-compat.h>
yann@1
   623
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
yann@1
   624
+strong_alias (__feclearexcept, __old_feclearexcept)
yann@1
   625
+compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
yann@1
   626
+#endif
yann@1
   627
+
yann@1
   628
+versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
yann@1
   629
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c
yann@1
   630
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fe_nomask.c	Wed Dec 31 16:00:00 1969
yann@1
   631
+++ glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c	Thu Jul  5 21:56:01 2001
yann@1
   632
@@ -0,0 +1,32 @@
yann@1
   633
+/* Procedure definition for FE_NOMASK_ENV.
yann@1
   634
+   Copyright (C) 1997 Free Software Foundation, Inc.
yann@1
   635
+   This file is part of the GNU C Library.
yann@1
   636
+
yann@1
   637
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   638
+   modify it under the terms of the GNU Lesser General Public
yann@1
   639
+   License as published by the Free Software Foundation; either
yann@1
   640
+   version 2.1 of the License, or (at your option) any later version.
yann@1
   641
+
yann@1
   642
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   643
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   644
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   645
+   Lesser General Public License for more details.
yann@1
   646
+
yann@1
   647
+   You should have received a copy of the GNU Lesser General Public
yann@1
   648
+   License along with the GNU C Library; if not, write to the Free
yann@1
   649
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   650
+   02111-1307 USA.  */
yann@1
   651
+
yann@1
   652
+#include <fenv.h>
yann@1
   653
+#include <errno.h>
yann@1
   654
+
yann@1
   655
+/* This is presently a stub, until it's decided how the kernels should
yann@1
   656
+   support this.  */
yann@1
   657
+
yann@1
   658
+const fenv_t *
yann@1
   659
+__fe_nomask_env(void)
yann@1
   660
+{
yann@1
   661
+  __set_errno (ENOSYS);
yann@1
   662
+  return FE_ENABLED_ENV;
yann@1
   663
+}
yann@1
   664
+stub_warning (__fe_nomask_env)
yann@1
   665
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fprrest.S glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S
yann@1
   666
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprrest.S	Wed Dec 31 16:00:00 1969
yann@1
   667
+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S	Thu Jul  5 21:56:01 2001
yann@1
   668
@@ -0,0 +1,94 @@
yann@1
   669
+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
yann@1
   670
+   This file is part of the GNU C Library.
yann@1
   671
+
yann@1
   672
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   673
+   modify it under the terms of the GNU Lesser General Public
yann@1
   674
+   License as published by the Free Software Foundation; either
yann@1
   675
+   version 2.1 of the License, or (at your option) any later version.
yann@1
   676
+
yann@1
   677
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   678
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   679
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   680
+   Lesser General Public License for more details.
yann@1
   681
+
yann@1
   682
+   You should have received a copy of the GNU Lesser General Public
yann@1
   683
+   License along with the GNU C Library; if not, write to the Free
yann@1
   684
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   685
+   02111-1307 USA.  */
yann@1
   686
+
yann@1
   687
+/*
yann@1
   688
+    Floating Point Registers (FPRs) restore routine
yann@1
   689
+*/
yann@1
   690
+
yann@1
   691
+#include <sysdep.h>
yann@1
   692
+
yann@1
   693
+ENTRY(_restfpr_all)
yann@1
   694
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
yann@1
   695
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
yann@1
   696
+C_TEXT(_restf14):
yann@1
   697
+C_TEXT(_restfpr_14):	lfd	fp14,-144(r1)
yann@1
   698
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
yann@1
   699
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
yann@1
   700
+C_TEXT(_restf15):
yann@1
   701
+C_TEXT(_restfpr_15):	lfd	fp15,-136(r1)
yann@1
   702
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
yann@1
   703
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
yann@1
   704
+C_TEXT(_restf16):
yann@1
   705
+C_TEXT(_restfpr_16):	lfd	fp16,-128(r1)
yann@1
   706
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
yann@1
   707
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
yann@1
   708
+C_TEXT(_restf17):
yann@1
   709
+C_TEXT(_restfpr_17):	lfd	fp17,-120(r1)
yann@1
   710
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
yann@1
   711
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
yann@1
   712
+C_TEXT(_restf18):
yann@1
   713
+C_TEXT(_restfpr_18):	lfd	fp18,-112(r1)
yann@1
   714
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
yann@1
   715
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
yann@1
   716
+C_TEXT(_restf19):
yann@1
   717
+C_TEXT(_restfpr_19):	lfd	fp19,-104(r1)
yann@1
   718
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
yann@1
   719
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
yann@1
   720
+C_TEXT(_restf20):
yann@1
   721
+C_TEXT(_restfpr_20):	lfd	fp20,-96(r1)
yann@1
   722
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
yann@1
   723
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
yann@1
   724
+C_TEXT(_restf21):
yann@1
   725
+C_TEXT(_restfpr_21):	lfd	fp21,-88(r1)
yann@1
   726
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
yann@1
   727
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
yann@1
   728
+C_TEXT(_restf22):
yann@1
   729
+C_TEXT(_restfpr_22):	lfd	fp22,-80(r1)
yann@1
   730
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
yann@1
   731
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
yann@1
   732
+C_TEXT(_restf23):
yann@1
   733
+C_TEXT(_restfpr_23):	lfd	fp23,-72(r1)
yann@1
   734
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
yann@1
   735
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
yann@1
   736
+C_TEXT(_restf24):
yann@1
   737
+C_TEXT(_restfpr_24):	lfd	fp24,-64(r1)
yann@1
   738
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
yann@1
   739
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
yann@1
   740
+C_TEXT(_restf25):
yann@1
   741
+C_TEXT(_restfpr_25):	lfd	fp25,-56(r1)
yann@1
   742
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
yann@1
   743
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
yann@1
   744
+C_TEXT(_restf26):
yann@1
   745
+C_TEXT(_restfpr_26):	lfd	fp26,-48(r1)
yann@1
   746
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
yann@1
   747
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
yann@1
   748
+C_TEXT(_restf27):
yann@1
   749
+C_TEXT(_restfpr_27):	lfd	fp27,-40(r1)
yann@1
   750
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
yann@1
   751
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
yann@1
   752
+C_TEXT(_restf28):
yann@1
   753
+C_TEXT(_restfpr_28):	lfd	fp28,-32(r1)
yann@1
   754
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
yann@1
   755
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
yann@1
   756
+C_TEXT(_restf29):
yann@1
   757
+C_TEXT(_restfpr_29):	lwz	r0,8(r1)	#get return address from frame
yann@1
   758
+			lfd	fp29,-24(r1)    #restore f29
yann@1
   759
+			mtlr	r0		#move return address to LR
yann@1
   760
+			lfd	fp30,-16(r1)	#restore f30
yann@1
   761
+			lfd	fp31,-8(r1)	#restore f31
yann@1
   762
+			blr			#return
yann@1
   763
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fprsave.S glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S
yann@1
   764
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprsave.S	Wed Dec 31 16:00:00 1969
yann@1
   765
+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S	Thu Jul  5 21:56:01 2001
yann@1
   766
@@ -0,0 +1,93 @@
yann@1
   767
+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
yann@1
   768
+   This file is part of the GNU C Library.
yann@1
   769
+
yann@1
   770
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   771
+   modify it under the terms of the GNU Lesser General Public
yann@1
   772
+   License as published by the Free Software Foundation; either
yann@1
   773
+   version 2.1 of the License, or (at your option) any later version.
yann@1
   774
+
yann@1
   775
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   776
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   777
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   778
+   Lesser General Public License for more details.
yann@1
   779
+
yann@1
   780
+   You should have received a copy of the GNU Lesser General Public
yann@1
   781
+   License along with the GNU C Library; if not, write to the Free
yann@1
   782
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   783
+   02111-1307 USA.  */
yann@1
   784
+
yann@1
   785
+/*
yann@1
   786
+    Floating Point Registers (FPRs) save routine
yann@1
   787
+*/
yann@1
   788
+
yann@1
   789
+#include <sysdep.h>
yann@1
   790
+
yann@1
   791
+ENTRY(_savefpr_all)
yann@1
   792
+                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
yann@1
   793
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
yann@1
   794
+C_TEXT(_savef14):
yann@1
   795
+C_TEXT(_savefpr_14):	stfd	fp14,-144(r1)
yann@1
   796
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
yann@1
   797
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
yann@1
   798
+C_TEXT(_savef15):
yann@1
   799
+C_TEXT(_savefpr_15):	stfd	fp15,-136(r1)
yann@1
   800
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
yann@1
   801
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
yann@1
   802
+C_TEXT(_savef16):
yann@1
   803
+C_TEXT(_savefpr_16):	stfd	fp16,-128(r1)
yann@1
   804
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
yann@1
   805
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
yann@1
   806
+C_TEXT(_savef17):
yann@1
   807
+C_TEXT(_savefpr_17):	stfd	fp17,-120(r1)
yann@1
   808
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
yann@1
   809
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
yann@1
   810
+C_TEXT(_savef18):
yann@1
   811
+C_TEXT(_savefpr_18):	stfd	fp18,-112(r1)
yann@1
   812
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
yann@1
   813
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
yann@1
   814
+C_TEXT(_savef19):
yann@1
   815
+C_TEXT(_savefpr_19):	stfd	fp19,-104(r1)
yann@1
   816
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
yann@1
   817
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
yann@1
   818
+C_TEXT(_savef20):
yann@1
   819
+C_TEXT(_savefpr_20):	stfd	fp20,-96(r1)
yann@1
   820
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
yann@1
   821
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
yann@1
   822
+C_TEXT(_savef21):
yann@1
   823
+C_TEXT(_savefpr_21):	stfd	fp21,-88(r1)
yann@1
   824
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
yann@1
   825
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
yann@1
   826
+C_TEXT(_savef22):
yann@1
   827
+C_TEXT(_savefpr_22):	stfd	fp22,-80(r1)
yann@1
   828
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
yann@1
   829
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
yann@1
   830
+C_TEXT(_savef23):
yann@1
   831
+C_TEXT(_savefpr_23):	stfd	fp23,-72(r1)
yann@1
   832
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
yann@1
   833
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
yann@1
   834
+C_TEXT(_savef24):
yann@1
   835
+C_TEXT(_savefpr_24):	stfd	fp24,-64(r1)
yann@1
   836
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
yann@1
   837
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
yann@1
   838
+C_TEXT(_savef25):
yann@1
   839
+C_TEXT(_savefpr_25):	stfd	fp25,-56(r1)
yann@1
   840
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
yann@1
   841
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
yann@1
   842
+C_TEXT(_savef26):
yann@1
   843
+C_TEXT(_savefpr_26):	stfd	fp26,-48(r1)
yann@1
   844
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
yann@1
   845
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
yann@1
   846
+C_TEXT(_savef27):
yann@1
   847
+C_TEXT(_savefpr_27):	stfd	fp27,-40(r1)
yann@1
   848
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
yann@1
   849
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
yann@1
   850
+C_TEXT(_savef28):
yann@1
   851
+C_TEXT(_savefpr_28):	stfd	fp28,-32(r1)
yann@1
   852
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
yann@1
   853
+		ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
yann@1
   854
+C_TEXT(_savef29):
yann@1
   855
+C_TEXT(_savefpr_29):	stfd	fp29,-24(r1)	#save f29
yann@1
   856
+			stfd	fp30,-16(r1)	#save f30
yann@1
   857
+			stfd	fp31,-8(r1)	#save f31
yann@1
   858
+			stw	r0,8(r1)	#save LR in callers frame
yann@1
   859
+			blr			#return
yann@1
   860
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h
yann@1
   861
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fpu_control.h	Wed Dec 31 16:00:00 1969
yann@1
   862
+++ glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h	Thu Jul  5 21:56:01 2001
yann@1
   863
@@ -0,0 +1,67 @@
yann@1
   864
+/* FPU control word definitions.  PowerPC version.
yann@1
   865
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
yann@1
   866
+   This file is part of the GNU C Library.
yann@1
   867
+
yann@1
   868
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   869
+   modify it under the terms of the GNU Lesser General Public
yann@1
   870
+   License as published by the Free Software Foundation; either
yann@1
   871
+   version 2.1 of the License, or (at your option) any later version.
yann@1
   872
+
yann@1
   873
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   874
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   875
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   876
+   Lesser General Public License for more details.
yann@1
   877
+
yann@1
   878
+   You should have received a copy of the GNU Lesser General Public
yann@1
   879
+   License along with the GNU C Library; if not, write to the Free
yann@1
   880
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
   881
+   02111-1307 USA.  */
yann@1
   882
+
yann@1
   883
+#ifndef _FPU_CONTROL_H
yann@1
   884
+#define _FPU_CONTROL_H
yann@1
   885
+
yann@1
   886
+/* rounding control */
yann@1
   887
+#define _FPU_RC_NEAREST 0x00   /* RECOMMENDED */
yann@1
   888
+#define _FPU_RC_DOWN    0x03
yann@1
   889
+#define _FPU_RC_UP      0x02
yann@1
   890
+#define _FPU_RC_ZERO    0x01
yann@1
   891
+
yann@1
   892
+#define _FPU_MASK_NI  0x04 /* non-ieee mode */
yann@1
   893
+
yann@1
   894
+/* masking of interrupts */
yann@1
   895
+#define _FPU_MASK_ZM  0x10 /* zero divide */
yann@1
   896
+#define _FPU_MASK_OM  0x40 /* overflow */
yann@1
   897
+#define _FPU_MASK_UM  0x20 /* underflow */
yann@1
   898
+#define _FPU_MASK_XM  0x08 /* inexact */
yann@1
   899
+#define _FPU_MASK_IM  0x80 /* invalid operation */
yann@1
   900
+
yann@1
   901
+#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
yann@1
   902
+
yann@1
   903
+/* The fdlibm code requires no interrupts for exceptions.  */
yann@1
   904
+#define _FPU_DEFAULT  0x00000000 /* Default value.  */
yann@1
   905
+
yann@1
   906
+/* IEEE:  same as above, but (some) exceptions;
yann@1
   907
+   we leave the 'inexact' exception off.
yann@1
   908
+ */
yann@1
   909
+#define _FPU_IEEE     0x000000f0
yann@1
   910
+
yann@1
   911
+/* Type of the control word.  */
yann@1
   912
+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
yann@1
   913
+
yann@1
   914
+/* Macros for accessing the hardware control word.  */
yann@1
   915
+#define _FPU_GETCW(cw) ( { \
yann@1
   916
+  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
yann@1
   917
+  __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
yann@1
   918
+  (cw)=tmp.cw[1]; \
yann@1
   919
+  tmp.cw[1]; } )
yann@1
   920
+#define _FPU_SETCW(cw) { \
yann@1
   921
+  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
yann@1
   922
+  tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
yann@1
   923
+  tmp.cw[1] = cw; \
yann@1
   924
+  __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
yann@1
   925
+}
yann@1
   926
+
yann@1
   927
+/* Default control word set at startup.  */
yann@1
   928
+extern fpu_control_t __fpu_control;
yann@1
   929
+
yann@1
   930
+#endif /* _FPU_CONTROL_H */
yann@1
   931
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S
yann@1
   932
--- glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S	Wed Dec 31 16:00:00 1969
yann@1
   933
+++ glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S	Thu Jul 10 11:43:44 2003
yann@1
   934
@@ -0,0 +1,73 @@
yann@1
   935
+/* setjmp for PowerPC.
yann@1
   936
+   Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
yann@1
   937
+   This file is part of the GNU C Library.
yann@1
   938
+
yann@1
   939
+   The GNU C Library is free software; you can redistribute it and/or
yann@1
   940
+   modify it under the terms of the GNU Library General Public License as
yann@1
   941
+   published by the Free Software Foundation; either version 2 of the
yann@1
   942
+   License, or (at your option) any later version.
yann@1
   943
+
yann@1
   944
+   The GNU C Library is distributed in the hope that it will be useful,
yann@1
   945
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
   946
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
   947
+   Library General Public License for more details.
yann@1
   948
+
yann@1
   949
+   You should have received a copy of the GNU Library General Public
yann@1
   950
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
yann@1
   951
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
yann@1
   952
+   Boston, MA 02111-1307, USA.  */
yann@1
   953
+
yann@1
   954
+#include <sysdep.h>
yann@1
   955
+#define _ASM
yann@1
   956
+#define _SETJMP_H
yann@1
   957
+#include <bits/setjmp.h>
yann@1
   958
+#include <bp-sym.h>
yann@1
   959
+#include <bp-asm.h>
yann@1
   960
+
yann@1
   961
+ENTRY (BP_SYM (__sigsetjmp))
yann@1
   962
+	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
yann@1
   963
+
yann@1
   964
+	stw  r1,(JB_GPR1*4)(3)
yann@1
   965
+	mflr r0
yann@1
   966
+	stw  r2,(JB_GPR2*4)(3)
yann@1
   967
+	stw  r14,((JB_GPRS+0)*4)(3)
yann@1
   968
+	stfd fp14,((JB_FPRS+0*2)*4)(3)
yann@1
   969
+	stw  r0,(JB_LR*4)(3)
yann@1
   970
+	stw  r15,((JB_GPRS+1)*4)(3)
yann@1
   971
+	stfd fp15,((JB_FPRS+1*2)*4)(3)
yann@1
   972
+	mfcr r0
yann@1
   973
+	stw  r16,((JB_GPRS+2)*4)(3)
yann@1
   974
+	stfd fp16,((JB_FPRS+2*2)*4)(3)
yann@1
   975
+	stw  r0,(JB_CR*4)(3)
yann@1
   976
+	stw  r17,((JB_GPRS+3)*4)(3)
yann@1
   977
+	stfd fp17,((JB_FPRS+3*2)*4)(3)
yann@1
   978
+	stw  r18,((JB_GPRS+4)*4)(3)
yann@1
   979
+	stfd fp18,((JB_FPRS+4*2)*4)(3)
yann@1
   980
+	stw  r19,((JB_GPRS+5)*4)(3)
yann@1
   981
+	stfd fp19,((JB_FPRS+5*2)*4)(3)
yann@1
   982
+	stw  r20,((JB_GPRS+6)*4)(3)
yann@1
   983
+	stfd fp20,((JB_FPRS+6*2)*4)(3)
yann@1
   984
+	stw  r21,((JB_GPRS+7)*4)(3)
yann@1
   985
+	stfd fp21,((JB_FPRS+7*2)*4)(3)
yann@1
   986
+	stw  r22,((JB_GPRS+8)*4)(3)
yann@1
   987
+	stfd fp22,((JB_FPRS+8*2)*4)(3)
yann@1
   988
+	stw  r23,((JB_GPRS+9)*4)(3)
yann@1
   989
+	stfd fp23,((JB_FPRS+9*2)*4)(3)
yann@1
   990
+	stw  r24,((JB_GPRS+10)*4)(3)
yann@1
   991
+	stfd fp24,((JB_FPRS+10*2)*4)(3)
yann@1
   992
+	stw  r25,((JB_GPRS+11)*4)(3)
yann@1
   993
+	stfd fp25,((JB_FPRS+11*2)*4)(3)
yann@1
   994
+	stw  r26,((JB_GPRS+12)*4)(3)
yann@1
   995
+	stfd fp26,((JB_FPRS+12*2)*4)(3)
yann@1
   996
+	stw  r27,((JB_GPRS+13)*4)(3)
yann@1
   997
+	stfd fp27,((JB_FPRS+13*2)*4)(3)
yann@1
   998
+	stw  r28,((JB_GPRS+14)*4)(3)
yann@1
   999
+	stfd fp28,((JB_FPRS+14*2)*4)(3)
yann@1
  1000
+	stw  r29,((JB_GPRS+15)*4)(3)
yann@1
  1001
+	stfd fp29,((JB_FPRS+15*2)*4)(3)
yann@1
  1002
+	stw  r30,((JB_GPRS+16)*4)(3)
yann@1
  1003
+	stfd fp30,((JB_FPRS+16*2)*4)(3)
yann@1
  1004
+	stw  r31,((JB_GPRS+17)*4)(3)
yann@1
  1005
+	stfd fp31,((JB_FPRS+17*2)*4)(3)
yann@1
  1006
+	b JUMPTARGET (BP_SYM (__sigjmp_save))
yann@1
  1007
+END (BP_SYM (__sigsetjmp))
yann@1
  1008
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu_control.h
yann@1
  1009
--- glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h	Thu Jul  5 21:56:01 2001
yann@1
  1010
+++ glibc-2.2.5/sysdeps/powerpc/fpu_control.h	Wed Dec 31 16:00:00 1969
yann@1
  1011
@@ -1,67 +0,0 @@
yann@1
  1012
-/* FPU control word definitions.  PowerPC version.
yann@1
  1013
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
yann@1
  1014
-   This file is part of the GNU C Library.
yann@1
  1015
-
yann@1
  1016
-   The GNU C Library is free software; you can redistribute it and/or
yann@1
  1017
-   modify it under the terms of the GNU Lesser General Public
yann@1
  1018
-   License as published by the Free Software Foundation; either
yann@1
  1019
-   version 2.1 of the License, or (at your option) any later version.
yann@1
  1020
-
yann@1
  1021
-   The GNU C Library is distributed in the hope that it will be useful,
yann@1
  1022
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@1
  1023
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@1
  1024
-   Lesser General Public License for more details.
yann@1
  1025
-
yann@1
  1026
-   You should have received a copy of the GNU Lesser General Public
yann@1
  1027
-   License along with the GNU C Library; if not, write to the Free
yann@1
  1028
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@1
  1029
-   02111-1307 USA.  */
yann@1
  1030
-
yann@1
  1031
-#ifndef _FPU_CONTROL_H
yann@1
  1032
-#define _FPU_CONTROL_H
yann@1
  1033
-
yann@1
  1034
-/* rounding control */
yann@1
  1035
-#define _FPU_RC_NEAREST 0x00   /* RECOMMENDED */
yann@1
  1036
-#define _FPU_RC_DOWN    0x03
yann@1
  1037
-#define _FPU_RC_UP      0x02
yann@1
  1038
-#define _FPU_RC_ZERO    0x01
yann@1
  1039
-
yann@1
  1040
-#define _FPU_MASK_NI  0x04 /* non-ieee mode */
yann@1
  1041
-
yann@1
  1042
-/* masking of interrupts */
yann@1
  1043
-#define _FPU_MASK_ZM  0x10 /* zero divide */
yann@1
  1044
-#define _FPU_MASK_OM  0x40 /* overflow */
yann@1
  1045
-#define _FPU_MASK_UM  0x20 /* underflow */
yann@1
  1046
-#define _FPU_MASK_XM  0x08 /* inexact */
yann@1
  1047
-#define _FPU_MASK_IM  0x80 /* invalid operation */
yann@1
  1048
-
yann@1
  1049
-#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
yann@1
  1050
-
yann@1
  1051
-/* The fdlibm code requires no interrupts for exceptions.  */
yann@1
  1052
-#define _FPU_DEFAULT  0x00000000 /* Default value.  */
yann@1
  1053
-
yann@1
  1054
-/* IEEE:  same as above, but (some) exceptions;
yann@1
  1055
-   we leave the 'inexact' exception off.
yann@1
  1056
- */
yann@1
  1057
-#define _FPU_IEEE     0x000000f0
yann@1
  1058
-
yann@1
  1059
-/* Type of the control word.  */
yann@1
  1060
-typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
yann@1
  1061
-
yann@1
  1062
-/* Macros for accessing the hardware control word.  */
yann@1
  1063
-#define _FPU_GETCW(cw) ( { \
yann@1
  1064
-  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
yann@1
  1065
-  __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
yann@1
  1066
-  (cw)=tmp.cw[1]; \
yann@1
  1067
-  tmp.cw[1]; } )
yann@1
  1068
-#define _FPU_SETCW(cw) { \
yann@1
  1069
-  union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
yann@1
  1070
-  tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
yann@1
  1071
-  tmp.cw[1] = cw; \
yann@1
  1072
-  __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
yann@1
  1073
-}
yann@1
  1074
-
yann@1
  1075
-/* Default control word set at startup.  */
yann@1
  1076
-extern fpu_control_t __fpu_control;
yann@1
  1077
-
yann@1
  1078
-#endif /* _FPU_CONTROL_H */
yann@1
  1079
diff -Naur glibc-2.2.5.old/sysdeps/powerpc/setjmp.S glibc-2.2.5/sysdeps/powerpc/setjmp.S
yann@1
  1080
--- glibc-2.2.5.old/sysdeps/powerpc/setjmp.S	Thu Jul  5 21:56:01 2001
yann@1
  1081
+++ glibc-2.2.5/sysdeps/powerpc/setjmp.S	Thu Jul 10 11:43:44 2003
yann@1
  1082
@@ -24,6 +24,8 @@
yann@1
  1083
 #include <bp-sym.h>
yann@1
  1084
 #include <bp-asm.h>
yann@1
  1085
 
yann@1
  1086
+/* The FPU stores have been removed from this file - see fpu/setjmp.S */
yann@1
  1087
+
yann@1
  1088
 ENTRY (BP_SYM (__sigsetjmp))
yann@1
  1089
 	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
yann@1
  1090
 
yann@1
  1091
@@ -31,43 +33,25 @@
yann@1
  1092
 	mflr r0
yann@1
  1093
 	stw  r2,(JB_GPR2*4)(3)
yann@1
  1094
 	stw  r14,((JB_GPRS+0)*4)(3)
yann@1
  1095
-	stfd fp14,((JB_FPRS+0*2)*4)(3)
yann@1
  1096
 	stw  r0,(JB_LR*4)(3)
yann@1
  1097
 	stw  r15,((JB_GPRS+1)*4)(3)
yann@1
  1098
-	stfd fp15,((JB_FPRS+1*2)*4)(3)
yann@1
  1099
 	mfcr r0
yann@1
  1100
 	stw  r16,((JB_GPRS+2)*4)(3)
yann@1
  1101
-	stfd fp16,((JB_FPRS+2*2)*4)(3)
yann@1
  1102
 	stw  r0,(JB_CR*4)(3)
yann@1
  1103
 	stw  r17,((JB_GPRS+3)*4)(3)
yann@1
  1104
-	stfd fp17,((JB_FPRS+3*2)*4)(3)
yann@1
  1105
 	stw  r18,((JB_GPRS+4)*4)(3)
yann@1
  1106
-	stfd fp18,((JB_FPRS+4*2)*4)(3)
yann@1
  1107
 	stw  r19,((JB_GPRS+5)*4)(3)
yann@1
  1108
-	stfd fp19,((JB_FPRS+5*2)*4)(3)
yann@1
  1109
 	stw  r20,((JB_GPRS+6)*4)(3)
yann@1
  1110
-	stfd fp20,((JB_FPRS+6*2)*4)(3)
yann@1
  1111
 	stw  r21,((JB_GPRS+7)*4)(3)
yann@1
  1112
-	stfd fp21,((JB_FPRS+7*2)*4)(3)
yann@1
  1113
 	stw  r22,((JB_GPRS+8)*4)(3)
yann@1
  1114
-	stfd fp22,((JB_FPRS+8*2)*4)(3)
yann@1
  1115
 	stw  r23,((JB_GPRS+9)*4)(3)
yann@1
  1116
-	stfd fp23,((JB_FPRS+9*2)*4)(3)
yann@1
  1117
 	stw  r24,((JB_GPRS+10)*4)(3)
yann@1
  1118
-	stfd fp24,((JB_FPRS+10*2)*4)(3)
yann@1
  1119
 	stw  r25,((JB_GPRS+11)*4)(3)
yann@1
  1120
-	stfd fp25,((JB_FPRS+11*2)*4)(3)
yann@1
  1121
 	stw  r26,((JB_GPRS+12)*4)(3)
yann@1
  1122
-	stfd fp26,((JB_FPRS+12*2)*4)(3)
yann@1
  1123
 	stw  r27,((JB_GPRS+13)*4)(3)
yann@1
  1124
-	stfd fp27,((JB_FPRS+13*2)*4)(3)
yann@1
  1125
 	stw  r28,((JB_GPRS+14)*4)(3)
yann@1
  1126
-	stfd fp28,((JB_FPRS+14*2)*4)(3)
yann@1
  1127
 	stw  r29,((JB_GPRS+15)*4)(3)
yann@1
  1128
-	stfd fp29,((JB_FPRS+15*2)*4)(3)
yann@1
  1129
 	stw  r30,((JB_GPRS+16)*4)(3)
yann@1
  1130
-	stfd fp30,((JB_FPRS+16*2)*4)(3)
yann@1
  1131
 	stw  r31,((JB_GPRS+17)*4)(3)
yann@1
  1132
-	stfd fp31,((JB_FPRS+17*2)*4)(3)
yann@1
  1133
 	b JUMPTARGET (BP_SYM (__sigjmp_save))
yann@1
  1134
 END (BP_SYM (__sigsetjmp))