📄 glibc-2.2.5-hhl-powerpc-fpu.patch
字号:
-C_TEXT(_savefpr_21): stfd fp21,-88(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)-C_TEXT(_savef22):-C_TEXT(_savefpr_22): stfd fp22,-80(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)-C_TEXT(_savef23):-C_TEXT(_savefpr_23): stfd fp23,-72(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)-C_TEXT(_savef24):-C_TEXT(_savefpr_24): stfd fp24,-64(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)-C_TEXT(_savef25):-C_TEXT(_savefpr_25): stfd fp25,-56(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)-C_TEXT(_savef26):-C_TEXT(_savefpr_26): stfd fp26,-48(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)-C_TEXT(_savef27):-C_TEXT(_savefpr_27): stfd fp27,-40(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)-C_TEXT(_savef28):-C_TEXT(_savefpr_28): stfd fp28,-32(r1)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)-C_TEXT(_savef29):-C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29- stfd fp30,-16(r1) #save f30- stfd fp31,-8(r1) #save f31- stw r0,8(r1) #save LR in callers frame- blr #returndiff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist glibc-2.2.5/sysdeps/powerpc/fpu/Dist--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist Wed Jan 26 17:48:02 2000+++ glibc-2.2.5/sysdeps/powerpc/fpu/Dist Thu Jul 10 11:43:17 2003@@ -1,3 +1,6 @@+fe_nomask.c+fprrest.S+fprsave.S fenv_const.c fenv_libc.h t_sqrt.cdiff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile glibc-2.2.5/sysdeps/powerpc/fpu/Makefile--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile Mon Oct 11 15:29:00 1999+++ glibc-2.2.5/sysdeps/powerpc/fpu/Makefile Thu Jul 10 11:43:17 2003@@ -1,3 +1,7 @@ ifeq ($(subdir),math) libm-support += fenv_const fe_nomask t_sqrt endif++ifeq ($(subdir),misc)+sysdep_routines += fprsave fprrest+endifdiff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions glibc-2.2.5/sysdeps/powerpc/fpu/Versions--- glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/Versions Thu Jul 10 11:43:17 2003@@ -0,0 +1,6 @@+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;+ }+}diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S--- glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S Thu Jul 10 11:43:17 2003@@ -0,0 +1,74 @@+/* longjmp for PowerPC.+ Copyright (C) 1995, 1996, 1997, 1999, 2000 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 Library General Public License as+ published by the Free Software Foundation; either version 2 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+ Library General Public License for more details.++ You should have received a copy of the GNU Library General Public+ License along with the GNU C Library; see the file COPYING.LIB. If not,+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,+ Boston, MA 02111-1307, USA. */++#include <sysdep.h>+#define _ASM+#define _SETJMP_H+#include <bits/setjmp.h>+#include <bp-sym.h>+#include <bp-asm.h>++ENTRY (BP_SYM (__longjmp))+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)++ lwz r1,(JB_GPR1*4)(r3)+ 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/fpu/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h--- glibc-2.2.5.old/sysdeps/powerpc/fpu/bits/setjmp.h Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h Thu Jul 10 11:43:17 2003@@ -0,0 +1,47 @@+/* Copyright (C) 1997, 1998, 2000 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 Library General Public License as+ published by the Free Software Foundation; either version 2 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+ Library General Public License for more details.++ You should have received a copy of the GNU Library General Public+ License along with the GNU C Library; see the file COPYING.LIB. If not,+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,+ Boston, MA 02111-1307, USA. */++/* Define the machine-dependent type `jmp_buf'. PowerPC version. */++#ifndef _SETJMP_H+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."+#endif++/* The previous bits/setjmp.h had __jmp_buf defined as a structure.+ We use an array of 'long int' instead, to make writing the+ assembler easier. Naturally, user code should not depend on+ either representation. */++#if defined __USE_MISC || defined _ASM+# define JB_GPR1 0 /* Also known as the stack pointer */+# define JB_GPR2 1+# 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)+#endif++#ifndef _ASM+typedef long int __jmp_buf[58];+#endif++/* Test if longjmp to JMPBUF would unwind the frame+ containing a local variable at ADDRESS. */+#define _JMPBUF_UNWINDS(jmpbuf, address) \+ ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c Thu Jul 5 21:56:01 2001@@ -0,0 +1,48 @@+/* 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/fpu/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fe_nomask.c Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c Thu Jul 5 21:56:01 2001@@ -0,0 +1,32 @@+/* 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/fpu/fprrest.S glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprrest.S Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S Thu Jul 5 21:56:01 2001@@ -0,0 +1,94 @@+/* 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -