📄 glibc-2.2.5-hhl-powerpc-fpu.patch
字号:
+ 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/fpu/fprsave.S glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprsave.S Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S Thu Jul 5 21:56:01 2001@@ -0,0 +1,93 @@+/* 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):+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/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h--- glibc-2.2.5.old/sysdeps/powerpc/fpu/fpu_control.h Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h Thu Jul 5 21:56:01 2001@@ -0,0 +1,67 @@+/* FPU control word definitions. PowerPC version.+ Copyright (C) 1996, 1997, 1998 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. */++#ifndef _FPU_CONTROL_H+#define _FPU_CONTROL_H++/* rounding control */+#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */+#define _FPU_RC_DOWN 0x03+#define _FPU_RC_UP 0x02+#define _FPU_RC_ZERO 0x01++#define _FPU_MASK_NI 0x04 /* non-ieee mode */++/* masking of interrupts */+#define _FPU_MASK_ZM 0x10 /* zero divide */+#define _FPU_MASK_OM 0x40 /* overflow */+#define _FPU_MASK_UM 0x20 /* underflow */+#define _FPU_MASK_XM 0x08 /* inexact */+#define _FPU_MASK_IM 0x80 /* invalid operation */++#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */++/* The fdlibm code requires no interrupts for exceptions. */+#define _FPU_DEFAULT 0x00000000 /* Default value. */++/* IEEE: same as above, but (some) exceptions;+ we leave the 'inexact' exception off.+ */+#define _FPU_IEEE 0x000000f0++/* Type of the control word. */+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));++/* Macros for accessing the hardware control word. */+#define _FPU_GETCW(cw) ( { \+ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \+ __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \+ (cw)=tmp.cw[1]; \+ tmp.cw[1]; } )+#define _FPU_SETCW(cw) { \+ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \+ tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \+ tmp.cw[1] = cw; \+ __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \+}++/* Default control word set at startup. */+extern fpu_control_t __fpu_control;++#endif /* _FPU_CONTROL_H */diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S--- glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S Wed Dec 31 16:00:00 1969+++ glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S Thu Jul 10 11:43:44 2003@@ -0,0 +1,73 @@+/* setjmp 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 (__sigsetjmp))+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)++ stw r1,(JB_GPR1*4)(3)+ mflr r0+ stw r2,(JB_GPR2*4)(3)+ stw r14,((JB_GPRS+0)*4)(3)+ stfd fp14,((JB_FPRS+0*2)*4)(3)+ stw r0,(JB_LR*4)(3)+ stw r15,((JB_GPRS+1)*4)(3)+ stfd fp15,((JB_FPRS+1*2)*4)(3)+ mfcr r0+ stw r16,((JB_GPRS+2)*4)(3)+ stfd fp16,((JB_FPRS+2*2)*4)(3)+ stw r0,(JB_CR*4)(3)+ stw r17,((JB_GPRS+3)*4)(3)+ stfd fp17,((JB_FPRS+3*2)*4)(3)+ stw r18,((JB_GPRS+4)*4)(3)+ stfd fp18,((JB_FPRS+4*2)*4)(3)+ stw r19,((JB_GPRS+5)*4)(3)+ stfd fp19,((JB_FPRS+5*2)*4)(3)+ stw r20,((JB_GPRS+6)*4)(3)+ stfd fp20,((JB_FPRS+6*2)*4)(3)+ stw r21,((JB_GPRS+7)*4)(3)+ stfd fp21,((JB_FPRS+7*2)*4)(3)+ stw r22,((JB_GPRS+8)*4)(3)+ stfd fp22,((JB_FPRS+8*2)*4)(3)+ stw r23,((JB_GPRS+9)*4)(3)+ stfd fp23,((JB_FPRS+9*2)*4)(3)+ stw r24,((JB_GPRS+10)*4)(3)+ stfd fp24,((JB_FPRS+10*2)*4)(3)+ stw r25,((JB_GPRS+11)*4)(3)+ stfd fp25,((JB_FPRS+11*2)*4)(3)+ stw r26,((JB_GPRS+12)*4)(3)+ stfd fp26,((JB_FPRS+12*2)*4)(3)+ stw r27,((JB_GPRS+13)*4)(3)+ stfd fp27,((JB_FPRS+13*2)*4)(3)+ stw r28,((JB_GPRS+14)*4)(3)+ stfd fp28,((JB_FPRS+14*2)*4)(3)+ stw r29,((JB_GPRS+15)*4)(3)+ stfd fp29,((JB_FPRS+15*2)*4)(3)+ stw r30,((JB_GPRS+16)*4)(3)+ stfd fp30,((JB_FPRS+16*2)*4)(3)+ stw r31,((JB_GPRS+17)*4)(3)+ stfd fp31,((JB_FPRS+17*2)*4)(3)+ b JUMPTARGET (BP_SYM (__sigjmp_save))+END (BP_SYM (__sigsetjmp))diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu_control.h--- glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/fpu_control.h Wed Dec 31 16:00:00 1969@@ -1,67 +0,0 @@-/* FPU control word definitions. PowerPC version.- Copyright (C) 1996, 1997, 1998 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. */--#ifndef _FPU_CONTROL_H-#define _FPU_CONTROL_H--/* rounding control */-#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */-#define _FPU_RC_DOWN 0x03-#define _FPU_RC_UP 0x02-#define _FPU_RC_ZERO 0x01--#define _FPU_MASK_NI 0x04 /* non-ieee mode */--/* masking of interrupts */-#define _FPU_MASK_ZM 0x10 /* zero divide */-#define _FPU_MASK_OM 0x40 /* overflow */-#define _FPU_MASK_UM 0x20 /* underflow */-#define _FPU_MASK_XM 0x08 /* inexact */-#define _FPU_MASK_IM 0x80 /* invalid operation */--#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */--/* The fdlibm code requires no interrupts for exceptions. */-#define _FPU_DEFAULT 0x00000000 /* Default value. */--/* IEEE: same as above, but (some) exceptions;- we leave the 'inexact' exception off.- */-#define _FPU_IEEE 0x000000f0--/* Type of the control word. */-typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));--/* Macros for accessing the hardware control word. */-#define _FPU_GETCW(cw) ( { \- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \- __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \- (cw)=tmp.cw[1]; \- tmp.cw[1]; } )-#define _FPU_SETCW(cw) { \- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \- tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \- tmp.cw[1] = cw; \- __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \-}--/* Default control word set at startup. */-extern fpu_control_t __fpu_control;--#endif /* _FPU_CONTROL_H */diff -Naur glibc-2.2.5.old/sysdeps/powerpc/setjmp.S glibc-2.2.5/sysdeps/powerpc/setjmp.S--- glibc-2.2.5.old/sysdeps/powerpc/setjmp.S Thu Jul 5 21:56:01 2001+++ glibc-2.2.5/sysdeps/powerpc/setjmp.S Thu Jul 10 11:43:44 2003@@ -24,6 +24,8 @@ #include <bp-sym.h> #include <bp-asm.h> +/* The FPU stores have been removed from this file - see fpu/setjmp.S */+ ENTRY (BP_SYM (__sigsetjmp)) CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE) @@ -31,43 +33,25 @@ mflr r0 stw r2,(JB_GPR2*4)(3) stw r14,((JB_GPRS+0)*4)(3)- stfd fp14,((JB_FPRS+0*2)*4)(3) stw r0,(JB_LR*4)(3) stw r15,((JB_GPRS+1)*4)(3)- stfd fp15,((JB_FPRS+1*2)*4)(3) mfcr r0 stw r16,((JB_GPRS+2)*4)(3)- stfd fp16,((JB_FPRS+2*2)*4)(3) stw r0,(JB_CR*4)(3) stw r17,((JB_GPRS+3)*4)(3)- stfd fp17,((JB_FPRS+3*2)*4)(3) stw r18,((JB_GPRS+4)*4)(3)- stfd fp18,((JB_FPRS+4*2)*4)(3) stw r19,((JB_GPRS+5)*4)(3)- stfd fp19,((JB_FPRS+5*2)*4)(3) stw r20,((JB_GPRS+6)*4)(3)- stfd fp20,((JB_FPRS+6*2)*4)(3) stw r21,((JB_GPRS+7)*4)(3)- stfd fp21,((JB_FPRS+7*2)*4)(3) stw r22,((JB_GPRS+8)*4)(3)- stfd fp22,((JB_FPRS+8*2)*4)(3) stw r23,((JB_GPRS+9)*4)(3)- stfd fp23,((JB_FPRS+9*2)*4)(3) stw r24,((JB_GPRS+10)*4)(3)- stfd fp24,((JB_FPRS+10*2)*4)(3) stw r25,((JB_GPRS+11)*4)(3)- stfd fp25,((JB_FPRS+11*2)*4)(3) stw r26,((JB_GPRS+12)*4)(3)- stfd fp26,((JB_FPRS+12*2)*4)(3) stw r27,((JB_GPRS+13)*4)(3)- stfd fp27,((JB_FPRS+13*2)*4)(3) stw r28,((JB_GPRS+14)*4)(3)- stfd fp28,((JB_FPRS+14*2)*4)(3) stw r29,((JB_GPRS+15)*4)(3)- stfd fp29,((JB_FPRS+15*2)*4)(3) stw r30,((JB_GPRS+16)*4)(3)- stfd fp30,((JB_FPRS+16*2)*4)(3) stw r31,((JB_GPRS+17)*4)(3)- stfd fp31,((JB_FPRS+17*2)*4)(3) b JUMPTARGET (BP_SYM (__sigjmp_save)) END (BP_SYM (__sigsetjmp))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -