📄 glibc-2.2.5-hhl-powerpc-fpu.patch
字号:
# See http://sources.redhat.com/ml/crossgcc/2002-05/msg00132.html# This patch is taken directly from the Montavista Hard Hat Linux 2.0 source RPMs,# but has been rediffed against glibc-2.2.5diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Dist glibc-2.2.5/sysdeps/powerpc/Dist--- glibc-2.2.5.old/sysdeps/powerpc/Dist Fri Jun 30 23:30:21 2000+++ glibc-2.2.5/sysdeps/powerpc/Dist Thu Jul 10 11:43:17 2003@@ -1,9 +1,6 @@ dl-machine.c dl-start.S ppc-mcount.S-fe_nomask.c-fprrest.S-fprsave.S gprsave1.S gprsave0.S gprrest1.Sdiff -Naur glibc-2.2.5.old/sysdeps/powerpc/Makefile glibc-2.2.5/sysdeps/powerpc/Makefile--- glibc-2.2.5.old/sysdeps/powerpc/Makefile Mon Nov 27 15:32:47 2000+++ glibc-2.2.5/sysdeps/powerpc/Makefile Thu Jul 10 11:43:17 2003@@ -3,16 +3,12 @@ +cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc asm-CPPFLAGS += -Wa,-mppc -ifeq ($(subdir),math)-libm-support += fenv_const fe_nomask-endif- ifeq ($(subdir),gmon) sysdep_routines += ppc-mcount endif ifeq ($(subdir),misc)-sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 fprsave fprrest+sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 endif # On PPC, -fpic works until the GOT contains 2^15 bytes, and possiblydiff -Naur glibc-2.2.5.old/sysdeps/powerpc/Versions glibc-2.2.5/sysdeps/powerpc/Versions--- glibc-2.2.5.old/sysdeps/powerpc/Versions Mon Feb 28 13:27:57 2000+++ glibc-2.2.5/sysdeps/powerpc/Versions Thu Jul 10 11:43:17 2003@@ -1,8 +1,4 @@ libm {- GLIBC_2.1 {- # symbols used in macros from sysdeps/powerpc/bits/fenv.h- __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;- } GLIBC_2.2 { # Special functions to save and restore registers used by the # runtime libraries.diff -Naur glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S glibc-2.2.5/sysdeps/powerpc/__longjmp.S--- glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/__longjmp.S Thu Jul 10 11:43:17 2003@@ -24,6 +24,8 @@ #include <bp-sym.h> #include <bp-asm.h> +/* The FPU loads have been removed from this file - see fpu/__longjmp.S */+ ENTRY (BP_SYM (__longjmp)) CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE) @@ -31,44 +33,26 @@ lwz r2,(JB_GPR2*4)(r3) lwz r0,(JB_LR*4)(r3) lwz r14,((JB_GPRS+0)*4)(r3)- lfd fp14,((JB_FPRS+0*2)*4)(r3) lwz r15,((JB_GPRS+1)*4)(r3)- lfd fp15,((JB_FPRS+1*2)*4)(r3) lwz r16,((JB_GPRS+2)*4)(r3)- lfd fp16,((JB_FPRS+2*2)*4)(r3) lwz r17,((JB_GPRS+3)*4)(r3)- lfd fp17,((JB_FPRS+3*2)*4)(r3) lwz r18,((JB_GPRS+4)*4)(r3)- lfd fp18,((JB_FPRS+4*2)*4)(r3) lwz r19,((JB_GPRS+5)*4)(r3)- lfd fp19,((JB_FPRS+5*2)*4)(r3) lwz r20,((JB_GPRS+6)*4)(r3)- lfd fp20,((JB_FPRS+6*2)*4)(r3) mtlr r0 lwz r21,((JB_GPRS+7)*4)(r3)- lfd fp21,((JB_FPRS+7*2)*4)(r3) lwz r22,((JB_GPRS+8)*4)(r3)- lfd fp22,((JB_FPRS+8*2)*4)(r3) lwz r0,(JB_CR*4)(r3) lwz r23,((JB_GPRS+9)*4)(r3)- lfd fp23,((JB_FPRS+9*2)*4)(r3) lwz r24,((JB_GPRS+10)*4)(r3)- lfd fp24,((JB_FPRS+10*2)*4)(r3) lwz r25,((JB_GPRS+11)*4)(r3)- lfd fp25,((JB_FPRS+11*2)*4)(r3) mtcrf 0xFF,r0 lwz r26,((JB_GPRS+12)*4)(r3)- lfd fp26,((JB_FPRS+12*2)*4)(r3) lwz r27,((JB_GPRS+13)*4)(r3)- lfd fp27,((JB_FPRS+13*2)*4)(r3) lwz r28,((JB_GPRS+14)*4)(r3)- lfd fp28,((JB_FPRS+14*2)*4)(r3) lwz r29,((JB_GPRS+15)*4)(r3)- lfd fp29,((JB_FPRS+15*2)*4)(r3) lwz r30,((JB_GPRS+16)*4)(r3)- lfd fp30,((JB_FPRS+16*2)*4)(r3) lwz r31,((JB_GPRS+17)*4)(r3)- lfd fp31,((JB_FPRS+17*2)*4)(r3) mr r3,r4 blr END (BP_SYM (__longjmp))diff -Naur glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h--- glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h Thu Jul 10 11:43:17 2003@@ -17,6 +17,7 @@ 02111-1307 USA. */ /* Define the machine-dependent type `jmp_buf'. PowerPC version. */+/* For processors without floating point. */ #ifndef _SETJMP_H # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."@@ -33,12 +34,11 @@ # define JB_LR 2 /* The address we will return to */ # define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */ # define JB_CR 21 /* Condition code registers. */-# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */-# define JB_SIZE (58*4)+# define JB_SIZE (22*4) #endif #ifndef _ASM-typedef long int __jmp_buf[58];+typedef long int __jmp_buf[22]; #endif /* Test if longjmp to JMPBUF would unwind the framediff -Naur glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c--- glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c Wed Dec 31 16:00:00 1969@@ -1,48 +0,0 @@-/* Clear given exceptions in current floating-point environment.- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.- This file is part of the GNU C Library.-- The GNU C Library is free software; you can redistribute it and/or- modify it under the terms of the GNU Lesser General Public- License as published by the Free Software Foundation; either- version 2.1 of the License, or (at your option) any later version.-- The GNU C Library is distributed in the hope that it will be useful,- but WITHOUT ANY WARRANTY; without even the implied warranty of- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU- Lesser General Public License for more details.-- You should have received a copy of the GNU Lesser General Public- License along with the GNU C Library; if not, write to the Free- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA- 02111-1307 USA. */--#include <fenv_libc.h>--#undef feclearexcept-int-__feclearexcept (int excepts)-{- fenv_union_t u;-- /* Get the current state. */- u.fenv = fegetenv_register ();-- /* Clear the relevant bits. */- u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)- | (excepts & FPSCR_STICKY_BITS));-- /* Put the new state in effect. */- fesetenv_register (u.fenv);-- /* Success. */- return 0;-}--#include <shlib-compat.h>-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)-strong_alias (__feclearexcept, __old_feclearexcept)-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);-#endif--versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fe_nomask.c--- glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/fe_nomask.c Wed Dec 31 16:00:00 1969@@ -1,32 +0,0 @@-/* Procedure definition for FE_NOMASK_ENV.- Copyright (C) 1997 Free Software Foundation, Inc.- This file is part of the GNU C Library.-- The GNU C Library is free software; you can redistribute it and/or- modify it under the terms of the GNU Lesser General Public- License as published by the Free Software Foundation; either- version 2.1 of the License, or (at your option) any later version.-- The GNU C Library is distributed in the hope that it will be useful,- but WITHOUT ANY WARRANTY; without even the implied warranty of- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU- Lesser General Public License for more details.-- You should have received a copy of the GNU Lesser General Public- License along with the GNU C Library; if not, write to the Free- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA- 02111-1307 USA. */--#include <fenv.h>-#include <errno.h>--/* This is presently a stub, until it's decided how the kernels should- support this. */--const fenv_t *-__fe_nomask_env(void)-{- __set_errno (ENOSYS);- return FE_ENABLED_ENV;-}-stub_warning (__fe_nomask_env)diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprrest.S glibc-2.2.5/sysdeps/powerpc/fprrest.S--- glibc-2.2.5.old/sysdeps/powerpc/fprrest.S Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/fprrest.S Wed Dec 31 16:00:00 1969@@ -1,94 +0,0 @@-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.- This file is part of the GNU C Library.-- The GNU C Library is free software; you can redistribute it and/or- modify it under the terms of the GNU Lesser General Public- License as published by the Free Software Foundation; either- version 2.1 of the License, or (at your option) any later version.-- The GNU C Library is distributed in the hope that it will be useful,- but WITHOUT ANY WARRANTY; without even the implied warranty of- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU- Lesser General Public License for more details.-- You should have received a copy of the GNU Lesser General Public- License along with the GNU C Library; if not, write to the Free- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA- 02111-1307 USA. */--/*- Floating Point Registers (FPRs) restore routine-*/--#include <sysdep.h>--ENTRY(_restfpr_all)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)-C_TEXT(_restf14):-C_TEXT(_restfpr_14): lfd fp14,-144(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)-C_TEXT(_restf15):-C_TEXT(_restfpr_15): lfd fp15,-136(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)-C_TEXT(_restf16):-C_TEXT(_restfpr_16): lfd fp16,-128(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)-C_TEXT(_restf17):-C_TEXT(_restfpr_17): lfd fp17,-120(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)-C_TEXT(_restf18):-C_TEXT(_restfpr_18): lfd fp18,-112(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)-C_TEXT(_restf19):-C_TEXT(_restfpr_19): lfd fp19,-104(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)-C_TEXT(_restf20):-C_TEXT(_restfpr_20): lfd fp20,-96(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)-C_TEXT(_restf21):-C_TEXT(_restfpr_21): lfd fp21,-88(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)-C_TEXT(_restf22):-C_TEXT(_restfpr_22): lfd fp22,-80(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)-C_TEXT(_restf23):-C_TEXT(_restfpr_23): lfd fp23,-72(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)-C_TEXT(_restf24):-C_TEXT(_restfpr_24): lfd fp24,-64(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)-C_TEXT(_restf25):-C_TEXT(_restfpr_25): lfd fp25,-56(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)-C_TEXT(_restf26):-C_TEXT(_restfpr_26): lfd fp26,-48(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)-C_TEXT(_restf27):-C_TEXT(_restfpr_27): lfd fp27,-40(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)-C_TEXT(_restf28):-C_TEXT(_restfpr_28): lfd fp28,-32(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)-C_TEXT(_restf29):-C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame- lfd fp29,-24(r1) #restore f29- mtlr r0 #move return address to LR- lfd fp30,-16(r1) #restore f30- lfd fp31,-8(r1) #restore f31- blr #returndiff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprsave.S glibc-2.2.5/sysdeps/powerpc/fprsave.S--- glibc-2.2.5.old/sysdeps/powerpc/fprsave.S Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/fprsave.S Wed Dec 31 16:00:00 1969@@ -1,93 +0,0 @@-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.- This file is part of the GNU C Library.-- The GNU C Library is free software; you can redistribute it and/or- modify it under the terms of the GNU Lesser General Public- License as published by the Free Software Foundation; either- version 2.1 of the License, or (at your option) any later version.-- The GNU C Library is distributed in the hope that it will be useful,- but WITHOUT ANY WARRANTY; without even the implied warranty of- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU- Lesser General Public License for more details.-- You should have received a copy of the GNU Lesser General Public- License along with the GNU C Library; if not, write to the Free- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA- 02111-1307 USA. */--/*- Floating Point Registers (FPRs) save routine-*/--#include <sysdep.h>--ENTRY(_savefpr_all)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)-C_TEXT(_savef14):-C_TEXT(_savefpr_14): stfd fp14,-144(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)-C_TEXT(_savef15):-C_TEXT(_savefpr_15): stfd fp15,-136(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)-C_TEXT(_savef16):-C_TEXT(_savefpr_16): stfd fp16,-128(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)-C_TEXT(_savef17):-C_TEXT(_savefpr_17): stfd fp17,-120(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)-C_TEXT(_savef18):-C_TEXT(_savefpr_18): stfd fp18,-112(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)-C_TEXT(_savef19):-C_TEXT(_savefpr_19): stfd fp19,-104(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)-C_TEXT(_savef20):-C_TEXT(_savefpr_20): stfd fp20,-96(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)-C_TEXT(_savef21):
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -