[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r3474 - in glibc-package/branches/eglibc-2.10/debian: . patches patches/mips



Author: aurel32
Date: 2009-05-09 23:08:53 +0000 (Sat, 09 May 2009)
New Revision: 3474

Removed:
   glibc-package/branches/eglibc-2.10/debian/patches/mips/cvs-context.diff
Modified:
   glibc-package/branches/eglibc-2.10/debian/changelog
   glibc-package/branches/eglibc-2.10/debian/patches/series
Log:
    - Remove debian/patches/mips/cvs-context.diff (merged).



Modified: glibc-package/branches/eglibc-2.10/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/changelog	2009-05-09 23:07:40 UTC (rev 3473)
+++ glibc-package/branches/eglibc-2.10/debian/changelog	2009-05-09 23:08:53 UTC (rev 3474)
@@ -17,8 +17,8 @@
     - Remove debian/patches/hurd-i386/cvs-get_pc_thunk.diff (merged).
     - Remove debian/patches/hurd-i386/cvs-strerror_l.diff (merged).
     - Remove debian/patches/hurd-i386/cvs-rtld.diff (merged).
+    - Remove debian/patches/mips/cvs-context.diff (merged).
 
-
  -- Aurelien Jarno <aurel32@debian.org>  Tue, 05 May 2009 09:57:43 +0200
 
 eglibc (2.9-13) unstable; urgency=low

Deleted: glibc-package/branches/eglibc-2.10/debian/patches/mips/cvs-context.diff
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/mips/cvs-context.diff	2009-05-09 23:07:40 UTC (rev 3473)
+++ glibc-package/branches/eglibc-2.10/debian/patches/mips/cvs-context.diff	2009-05-09 23:08:53 UTC (rev 3474)
@@ -1,1019 +0,0 @@
-2009-04-18  Maciej W. Rozycki  <macro@codesourcery.com>
-    
-    	* sysdeps/unix/sysv/linux/mips/getcontext.S: New file.
-    	* sysdeps/unix/sysv/linux/mips/makecontext.S: New file.
-    	* sysdeps/unix/sysv/linux/mips/setcontext.S: New file.
-    	* sysdeps/unix/sysv/linux/mips/swapcontext.S: New file.
-    	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h (mcontext_t):
-    	Update comment.
-    	* sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h: New file.
-    	* sysdeps/unix/sysv/linux/mips/ucontext_i.sym: New file.
-    	* sysdeps/unix/sysv/linux/mips/Makefile (gen-as-const-headers):
-    	Add ucontext_i.sym.
-
-2009-04-15  Maciej W. Rozycki  <macro@codesourcery.com>
-    
-	* sysdeps/mips/sys/fpregdef.h: Update for new ABIs.
-
-diff --git a/sysdeps/unix/sysv/linux/mips/Makefile b/sysdeps/unix/sysv/linux/mips/Makefile
-index 110fccb..162f1b9 100644
---- a/ports/sysdeps/unix/sysv/linux/mips/Makefile
-+++ b/ports/sysdeps/unix/sysv/linux/mips/Makefile
-@@ -135,3 +135,7 @@ sysdep_routines += dl-static
- sysdep-rtld-routines += dl-static
- endif
- endif
-+
-+ifeq ($(subdir),stdlib)
-+gen-as-const-headers += ucontext_i.sym
-+endif
-diff --git a/sysdeps/unix/sysv/linux/mips/getcontext.S b/sysdeps/unix/sysv/linux/mips/getcontext.S
-new file mode 100644
-index 0000000..1e77467
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/getcontext.S
-@@ -0,0 +1,149 @@
-+/* Save current context.
-+   Copyright (C) 2009 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+   Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-+
-+   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, 51 Franklin Street - Fifth Floor, Boston, MA
-+   02110-1301, USA.  */
-+
-+#include <sysdep.h>
-+#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
-+
-+#include "ucontext_i.h"
-+
-+/* int getcontext (ucontext_t *ucp) */
-+
-+	.text
-+LOCALSZ = 0
-+MASK = 0x00000000
-+#ifdef __PIC__
-+LOCALSZ = 1						/* save gp */
-+# if _MIPS_SIM != _ABIO32
-+MASK = 0x10000000
-+# endif
-+#endif
-+FRAMESZ = ((LOCALSZ * SZREG) + ALSZ) & ALMASK
-+GPOFF = FRAMESZ - (1 * SZREG)
-+
-+NESTED (__getcontext, FRAMESZ, ra)
-+	.mask	MASK, 0
-+	.fmask	0x00000000, 0
-+
-+#ifdef __PIC__
-+	SETUP_GP
-+
-+	move	a2, sp
-+# define _SP a2
-+
-+# if _MIPS_SIM != _ABIO32
-+	move	a3, gp
-+#  define _GP a3
-+# endif
-+
-+	PTR_ADDIU sp, -FRAMESZ
-+	SETUP_GP64 (GPOFF, __getcontext)
-+	SAVE_GP (GPOFF)
-+
-+#else  /* ! __PIC__ */
-+# define _SP sp
-+# define _GP gp
-+
-+#endif /* ! __PIC__ */
-+
-+#ifdef PROF
-+	.set	noat
-+	move	AT, ra
-+	jal	_mcount
-+	.set	at
-+#endif
-+
-+	/* Store a magic flag.	*/
-+	li	v1, 1
-+	REG_S	v1, (0 * SZREG + MCONTEXT_GREGS)(a0)	/* zero */
-+
-+	REG_S	s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
-+#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-+	REG_S	_GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
-+#endif
-+	REG_S	_SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	ra, MCONTEXT_PC(a0)
-+
-+#ifdef __mips_hard_float
-+# if _MIPS_SIM == _ABI64
-+	s.d	fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
-+
-+# else  /* _MIPS_SIM != _ABI64 */
-+	s.d	fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-+
-+# endif /* _MIPS_SIM != _ABI64 */
-+
-+	cfc1	v1, fcr31
-+	sw	v1, MCONTEXT_FPC_CSR(a0)
-+#endif /* __mips_hard_float */
-+
-+/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
-+	li	a3, _NSIG8
-+	PTR_ADDU a2, a0, UCONTEXT_SIGMASK
-+	move	a1, zero
-+	li	a0, SIG_BLOCK
-+
-+	li	v0, SYS_ify (rt_sigprocmask)
-+	syscall
-+	bnez	a3, 99f
-+
-+#ifdef __PIC__
-+	RESTORE_GP64
-+	PTR_ADDIU sp, FRAMESZ
-+#endif
-+	move	v0, zero
-+	jr	ra
-+
-+99:
-+#ifdef __PIC__
-+	PTR_LA	t9, JUMPTARGET (__syscall_error)
-+	RESTORE_GP64
-+	PTR_ADDIU sp, FRAMESZ
-+	jr	t9
-+
-+#else  /* ! __PIC__ */
-+
-+	j	JUMPTARGET (__syscall_error)
-+#endif /* ! __PIC__ */
-+PSEUDO_END (__getcontext)
-+
-+weak_alias (__getcontext, getcontext)
-diff --git a/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h b/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h
-new file mode 100644
-index 0000000..edf8d45
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h
-@@ -0,0 +1,10 @@
-+/* Linux kernel RT signal frame. */
-+typedef struct kernel_rt_sigframe
-+  {
-+    uint32_t rs_ass[4];
-+    uint32_t rs_code[2];
-+    struct siginfo rs_info;
-+    struct ucontext rs_uc;
-+    uint32_t rs_altcode[8] __attribute__ ((__aligned__ (1 << 7)));
-+  }
-+kernel_rt_sigframe_t;
-diff --git a/sysdeps/unix/sysv/linux/mips/makecontext.S b/sysdeps/unix/sysv/linux/mips/makecontext.S
-new file mode 100644
-index 0000000..cceee3f
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/makecontext.S
-@@ -0,0 +1,189 @@
-+/* Modify saved context.
-+   Copyright (C) 2009 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+   Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-+
-+   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, 51 Franklin Street - Fifth Floor, Boston, MA
-+   02110-1301, USA.  */
-+
-+#include <sysdep.h>
-+#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
-+
-+#include "ucontext_i.h"
-+
-+/* int makecontext (ucontext_t *ucp, (void *func) (), int argc, ...) */
-+
-+	.text
-+LOCALSZ = 0
-+ARGSZ = 0
-+MASK = 0x00000000
-+#ifdef __PIC__
-+LOCALSZ = 1						/* save gp */
-+#endif
-+#if _MIPS_SIM != _ABIO32
-+ARGSZ = 5						/* save a3-a7 */
-+# ifdef __PIC__
-+MASK = 0x10000000
-+# endif
-+#endif
-+FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
-+GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
-+#if _MIPS_SIM != _ABIO32
-+A3OFF = FRAMESZ - (5 * SZREG)				/* callee-allocated */
-+A4OFF = FRAMESZ - (4 * SZREG)
-+A5OFF = FRAMESZ - (3 * SZREG)
-+A6OFF = FRAMESZ - (2 * SZREG)
-+A7OFF = FRAMESZ - (1 * SZREG)
-+NARGREGS = 8
-+#else
-+A3OFF = FRAMESZ + (3 * SZREG)				/* caller-allocated */
-+NARGREGS = 4
-+#endif
-+
-+NESTED (__makecontext, FRAMESZ, ra)
-+	.mask	MASK, -(ARGSZ * SZREG)
-+	.fmask	0x00000000, 0
-+
-+98:
-+#ifdef __PIC__
-+	SETUP_GP
-+#endif
-+
-+	PTR_ADDIU sp, -FRAMESZ
-+
-+#ifdef __PIC__
-+	SETUP_GP64 (GPOFF, __makecontext)
-+	SAVE_GP (GPOFF)
-+#endif
-+
-+#ifdef PROF
-+	.set	noat
-+	move	AT, ra
-+	jal	_mcount
-+	.set	at
-+#endif
-+
-+	/* Store args to be passed.  */
-+	REG_S	a3, A3OFF(sp)
-+#if _MIPS_SIM != _ABIO32
-+	REG_S	a4, A4OFF(sp)
-+	REG_S	a5, A5OFF(sp)
-+	REG_S	a6, A6OFF(sp)
-+	REG_S	a7, A7OFF(sp)
-+#endif
-+
-+	/* Store a magic flag.  */
-+	li	v1, 1
-+	REG_S	v1, (0 * SZREG + MCONTEXT_GREGS)(a0)	/* zero */
-+
-+	/* Set up the stack.  */
-+	PTR_L	t0, STACK_SP(a0)
-+	PTR_L	t2, STACK_SIZE(a0)
-+	PTR_ADDIU t1, sp, A3OFF
-+	PTR_ADDU t0, t2
-+	and	t0, ALMASK
-+	blez	a2, 2f					/* no arguments */
-+
-+	/* Store register arguments.  */
-+	PTR_ADDIU t2, a0, MCONTEXT_GREGS + 4 * SZREG
-+	move	t3, zero
-+0:
-+	addiu	t3, 1
-+	REG_L	v1, (t1)
-+	PTR_ADDIU t1, SZREG
-+	REG_S	v1, (t2)
-+	PTR_ADDIU t2, SZREG
-+	bgeu	t3, a2, 2f				/* all done */
-+	bltu	t3, NARGREGS, 0b			/* next */
-+
-+	/* Make room for stack arguments.  */
-+	PTR_SUBU t2, a2, t3
-+	PTR_SLL	t2, 3
-+	PTR_SUBU t0, t2
-+	and	t0, ALMASK
-+
-+	/* Store stack arguments.  */
-+	move	t2, t0
-+1:
-+	addiu	t3, 1
-+	REG_L	v1, (t1)
-+	PTR_ADDIU t1, SZREG
-+	REG_S	v1, (t2)
-+	PTR_ADDIU t2, SZREG
-+	bltu	t3, a2, 1b				/* next */
-+
-+2:
-+#if _MIPS_SIM == _ABIO32
-+	/* Make room for a0-a3 storage.  */
-+	PTR_ADDIU t0, -(NARGSAVE * SZREG)
-+#endif
-+	PTR_L	v1, UCONTEXT_LINK(a0)
-+#ifdef __PIC__
-+	PTR_ADDIU t9, 99f - 98b
-+#else
-+	PTR_LA	t9, 99f
-+#endif
-+	REG_S	t0, (29 * SZREG + MCONTEXT_GREGS)(a0)	/* sp */
-+	REG_S	v1, (16 * SZREG + MCONTEXT_GREGS)(a0)	/* s0 */
-+#ifdef __PIC__
-+	REG_S	gp, (17 * SZREG + MCONTEXT_GREGS)(a0)	/* s1 */
-+#endif
-+	REG_S	t9, (31 * SZREG + MCONTEXT_GREGS)(a0)	/* ra */
-+	REG_S	a1, MCONTEXT_PC(a0)
-+
-+#ifdef __PIC__
-+	RESTORE_GP64
-+	PTR_ADDIU sp, FRAMESZ
-+#endif
-+	jr	ra
-+
-+99:
-+#ifdef __PIC__
-+	move	gp, s1
-+#endif
-+	move	a0, zero
-+	beqz	s0, 0f
-+
-+	/* setcontext (ucp) */
-+	move	a0, s0
-+#ifdef __PIC__
-+	PTR_LA	t9, JUMPTARGET (__setcontext)
-+	jalr	t9
-+# if _MIPS_SIM == _ABIO32
-+	move	gp, s1
-+# endif
-+#else
-+	jal	JUMPTARGET (__setcontext)
-+#endif
-+	move	a0, v0
-+
-+0:
-+	/* exit (a0) */
-+#ifdef __PIC__
-+	PTR_LA	t9, HIDDEN_JUMPTARGET (exit)
-+	jalr	t9
-+#else
-+	jal	HIDDEN_JUMPTARGET (exit)
-+#endif
-+
-+	/* You don't exist, you won't feel anything.  */
-+1:
-+	lb	zero, (zero)
-+	b	1b
-+PSEUDO_END (__makecontext)
-+
-+weak_alias (__makecontext, makecontext)
-diff --git a/sysdeps/unix/sysv/linux/mips/setcontext.S b/sysdeps/unix/sysv/linux/mips/setcontext.S
-new file mode 100644
-index 0000000..186f3a7
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/setcontext.S
-@@ -0,0 +1,192 @@
-+/* Set current context.
-+   Copyright (C) 2009 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+   Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-+
-+   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, 51 Franklin Street - Fifth Floor, Boston, MA
-+   02110-1301, USA.  */
-+
-+#include <sysdep.h>
-+#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
-+
-+#include "ucontext_i.h"
-+
-+/* int setcontext (const ucontext_t *ucp) */
-+
-+	.text
-+LOCALSZ = 0
-+ARGSZ = 0
-+MASK = 0x00000000
-+#ifdef __PIC__
-+LOCALSZ = 1						/* save gp */
-+#endif
-+#if _MIPS_SIM != _ABIO32
-+ARGSZ = 1						/* save a0 */
-+# ifdef __PIC__
-+MASK = 0x10000000
-+# endif
-+#endif
-+FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
-+GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
-+#if _MIPS_SIM != _ABIO32
-+A0OFF = FRAMESZ - (1 * SZREG)				/* callee-allocated */
-+#else
-+A0OFF = FRAMESZ + (0 * SZREG)				/* caller-allocated */
-+#endif
-+
-+NESTED (__setcontext, FRAMESZ, ra)
-+	.mask	MASK, -(ARGSZ * SZREG)
-+	.fmask	0x00000000, 0
-+
-+#ifdef __PIC__
-+	SETUP_GP
-+#endif
-+
-+	PTR_ADDIU sp, -FRAMESZ
-+
-+#ifdef __PIC__
-+	SETUP_GP64 (GPOFF, __setcontext)
-+	SAVE_GP (GPOFF)
-+#endif
-+
-+#ifdef PROF
-+	.set	noat
-+	move	AT, ra
-+	jal	_mcount
-+	.set	at
-+#endif
-+
-+	/* Check for the magic flag.  */
-+	li	v0, 1
-+	REG_L	v1, (0 * SZREG + MCONTEXT_GREGS)(a0)	/* zero */
-+	bne	v0, v1, 98f
-+
-+	REG_S	a0, A0OFF(sp)
-+
-+/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */
-+	li	a3, _NSIG8
-+	move	a2, zero
-+	PTR_ADDU a1, a0, UCONTEXT_SIGMASK
-+	li	a0, SIG_SETMASK
-+
-+	li	v0, SYS_ify (rt_sigprocmask)
-+	syscall
-+	bnez	a3, 99f
-+
-+	REG_L	v0, A0OFF(sp)
-+
-+#ifdef __mips_hard_float
-+# if _MIPS_SIM == _ABI64
-+	l.d	fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
-+
-+# else  /* _MIPS_SIM != _ABI64 */
-+	l.d	fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-+
-+# endif /* _MIPS_SIM != _ABI64 */
-+
-+	lw	v1, MCONTEXT_FPC_CSR(v0)
-+	ctc1	v1, fcr31
-+#endif /* __mips_hard_float */
-+
-+	/* Note the contents of argument registers will be random
-+	   unless makecontext() has been called.  */
-+	REG_L	a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
-+#if _MIPS_SIM != _ABIO32
-+	REG_L	a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
-+#endif
-+
-+	REG_L	s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
-+#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-+	REG_L	gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
-+#endif
-+	REG_L	sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	t9, MCONTEXT_PC(v0)
-+
-+	move	v0, zero
-+	jr	t9
-+
-+98:
-+	/* This is a context obtained from a signal handler.
-+	   Perform a full restore by pushing the context
-+	   passed onto a simulated signal frame on the stack
-+	   and call the signal return syscall as if a signal
-+	   handler exited normally.  */
-+	PTR_ADDIU sp, -((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
-+
-+	/* Only ucontext is referred to from rt_sigreturn,
-+	   copy it.  */
-+	PTR_ADDIU t1, sp, RT_SIGFRAME_UCONTEXT
-+	li	t3, ((UCONTEXT_SIZE + SZREG - 1) / SZREG) - 1
-+0:
-+	REG_L	t2, (a0)
-+	PTR_ADDIU a0, SZREG
-+	REG_S	t2, (t1)
-+	PTR_ADDIU t1, SZREG
-+	.set	noreorder
-+	bgtz	t3, 0b
-+	 addiu	t3, -1
-+	.set	reorder
-+
-+/* rt_sigreturn () -- no arguments, sp points to struct rt_sigframe.  */
-+	li	v0, SYS_ify (rt_sigreturn)
-+	syscall
-+
-+	/* Restore the stack and fall through to the error
-+	   path.  Successful rt_sigreturn never returns to
-+	   its calling place.  */
-+	PTR_ADDIU sp, ((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
-+99:
-+#ifdef __PIC__
-+	PTR_LA	t9, JUMPTARGET (__syscall_error)
-+	RESTORE_GP64
-+	PTR_ADDIU sp, FRAMESZ
-+	jr	t9
-+
-+#else  /* ! __PIC__ */
-+
-+	j	JUMPTARGET (__syscall_error)
-+#endif /* ! __PIC__ */
-+PSEUDO_END (__setcontext)
-+
-+weak_alias (__setcontext, setcontext)
-diff --git a/sysdeps/unix/sysv/linux/mips/swapcontext.S b/sysdeps/unix/sysv/linux/mips/swapcontext.S
-new file mode 100644
-index 0000000..b0b8417
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/swapcontext.S
-@@ -0,0 +1,212 @@
-+/* Save and set current context.
-+   Copyright (C) 2009 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+   Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-+
-+   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, 51 Franklin Street - Fifth Floor, Boston, MA
-+   02110-1301, USA.  */
-+
-+#include <sysdep.h>
-+#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
-+
-+#include "ucontext_i.h"
-+
-+/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
-+
-+	.text
-+LOCALSZ = 0
-+ARGSZ = 0
-+MASK = 0x00000000
-+#ifdef __PIC__
-+LOCALSZ = 1						/* save gp */
-+#endif
-+#if _MIPS_SIM != _ABIO32
-+ARGSZ = 1						/* save a1 */
-+# ifdef __PIC__
-+MASK = 0x10000000
-+# endif
-+#endif
-+FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
-+GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
-+#if _MIPS_SIM != _ABIO32
-+A1OFF = FRAMESZ - (1 * SZREG)				/* callee-allocated */
-+#else
-+A1OFF = FRAMESZ + (1 * SZREG)				/* caller-allocated */
-+#endif
-+
-+NESTED (__swapcontext, FRAMESZ, ra)
-+	.mask	MASK, -(ARGSZ * SZREG)
-+	.fmask	0x00000000, 0
-+
-+#ifdef __PIC__
-+	SETUP_GP
-+
-+	move	a2, sp
-+# define _SP a2
-+
-+# if _MIPS_SIM != _ABIO32
-+	move	a3, gp
-+#  define _GP a3
-+# endif
-+
-+	PTR_ADDIU sp, -FRAMESZ
-+	SETUP_GP64 (GPOFF, __swapcontext)
-+	SAVE_GP (GPOFF)
-+
-+#else  /* ! __PIC__ */
-+# define _SP sp
-+# define _GP gp
-+
-+#endif /* ! __PIC__ */
-+
-+#ifdef PROF
-+	.set	noat
-+	move	AT, ra
-+	jal	_mcount
-+	.set	at
-+#endif
-+
-+	/* Store a magic flag.	*/
-+	li	v1, 1
-+	REG_S	v1, (0 * SZREG + MCONTEXT_GREGS)(a0)	/* zero */
-+
-+	REG_S	s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
-+#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-+	REG_S	_GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
-+#endif
-+	REG_S	_SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
-+	REG_S	ra, MCONTEXT_PC(a0)
-+
-+#ifdef __mips_hard_float
-+# if _MIPS_SIM == _ABI64
-+	s.d	fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
-+
-+# else  /* _MIPS_SIM != _ABI64 */
-+	s.d	fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-+	s.d	fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-+
-+# endif /* _MIPS_SIM != _ABI64 */
-+
-+	cfc1	v1, fcr31
-+	sw	v1, MCONTEXT_FPC_CSR(a0)
-+#endif /* __mips_hard_float */
-+
-+	REG_S	a1, A1OFF(sp)
-+
-+/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
-+	li	a3, _NSIG8
-+	PTR_ADDU a2, a0, UCONTEXT_SIGMASK
-+	PTR_ADDU a1, a1, UCONTEXT_SIGMASK
-+	li	a0, SIG_SETMASK
-+
-+	li	v0, SYS_ify (rt_sigprocmask)
-+	syscall
-+	bnez	a3, 99f
-+
-+	REG_L	v0, A1OFF(sp)
-+
-+#ifdef __mips_hard_float
-+# if _MIPS_SIM == _ABI64
-+	l.d	fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
-+
-+# else  /* _MIPS_SIM != _ABI64 */
-+	l.d	fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-+	l.d	fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-+
-+# endif /* _MIPS_SIM != _ABI64 */
-+
-+	lw	v1, MCONTEXT_FPC_CSR(v0)
-+	ctc1	v1, fcr31
-+#endif /* __mips_hard_float */
-+
-+	/* Note the contents of argument registers will be random
-+	   unless makecontext() has been called.  */
-+	REG_L	a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
-+#if _MIPS_SIM != _ABIO32
-+	REG_L	a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
-+#endif
-+
-+	REG_L	s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
-+#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-+	REG_L	gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
-+#endif
-+	REG_L	sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
-+	REG_L	t9, MCONTEXT_PC(v0)
-+
-+	move	v0, zero
-+	jr	t9
-+
-+99:
-+#ifdef __PIC__
-+	PTR_LA	t9, JUMPTARGET (__syscall_error)
-+	RESTORE_GP64
-+	PTR_ADDIU sp, FRAMESZ
-+	jr	t9
-+
-+#else  /* ! __PIC__ */
-+
-+	j	JUMPTARGET (__syscall_error)
-+#endif /* ! __PIC__ */
-+PSEUDO_END (__swapcontext)
-+
-+weak_alias (__swapcontext, swapcontext)
-diff --git a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
-index ac496f3..251f0c8 100644
---- a/ports/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
-+++ b/ports/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
-+/* Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006, 2009 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
-@@ -56,12 +56,9 @@ typedef struct fpregset {
- #if _MIPS_SIM == _ABIO32
- /* Earlier versions of glibc for mips had an entirely different
-    definition of mcontext_t, that didn't even resemble the
--   corresponding kernel data structure.  Since all legitimate uses of
--   ucontext_t in glibc mustn't have accessed anything beyond
--   uc_mcontext and, even then, taking a pointer to it, casting it to
--   sigcontext_t, and accessing it as such, which is what it has always
--   been, this can still be rectified.  Fortunately, makecontext,
--   [gs]etcontext et all have never been implemented.  */
-+   corresponding kernel data structure.  Fortunately, makecontext,
-+   [gs]etcontext et all were not implemented back then, so this can
-+   still be rectified.  */
- typedef struct
-   {
-     unsigned int regmask;
-diff --git a/sysdeps/unix/sysv/linux/mips/ucontext_i.sym b/sysdeps/unix/sysv/linux/mips/ucontext_i.sym
-new file mode 100644
-index 0000000..f14b886
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/ucontext_i.sym
-@@ -0,0 +1,52 @@
-+#include <inttypes.h>
-+#include <signal.h>
-+#include <stddef.h>
-+#include <sys/ucontext.h>
-+
-+#include <kernel_rt_sigframe.h>
-+
-+-- Constants used by the rt_sigprocmask call.
-+
-+SIG_BLOCK
-+SIG_SETMASK
-+
-+_NSIG8				(_NSIG / 8)
-+
-+-- Offsets of the fields in the kernel rt_sigframe_t structure.
-+#define rt_sigframe(member)	offsetof (kernel_rt_sigframe_t, member)
-+
-+RT_SIGFRAME_UCONTEXT		rt_sigframe (rs_uc)
-+
-+RT_SIGFRAME_SIZE		sizeof (kernel_rt_sigframe_t)
-+
-+-- Offsets of the fields in the ucontext_t structure.
-+#define ucontext(member)	offsetof (ucontext_t, member)
-+#define stack(member)		ucontext (uc_stack.member)
-+#define mcontext(member)	ucontext (uc_mcontext.member)
-+
-+UCONTEXT_FLAGS			ucontext (uc_flags)
-+UCONTEXT_LINK			ucontext (uc_link)
-+UCONTEXT_STACK			ucontext (uc_stack)
-+UCONTEXT_MCONTEXT		ucontext (uc_mcontext)
-+UCONTEXT_SIGMASK		ucontext (uc_sigmask)
-+
-+STACK_SP			stack (ss_sp)
-+STACK_SIZE			stack (ss_size)
-+STACK_FLAGS			stack (ss_flags)
-+
-+MCONTEXT_GREGS			mcontext (gregs)
-+MCONTEXT_FPREGS			mcontext (fpregs)
-+MCONTEXT_MDHI			mcontext (mdhi)
-+MCONTEXT_HI1			mcontext (hi1)
-+MCONTEXT_HI2			mcontext (hi2)
-+MCONTEXT_HI3			mcontext (hi3)
-+MCONTEXT_MDLO			mcontext (mdlo)
-+MCONTEXT_LO1			mcontext (lo1)
-+MCONTEXT_LO2			mcontext (lo2)
-+MCONTEXT_LO3			mcontext (lo3)
-+MCONTEXT_PC			mcontext (pc)
-+MCONTEXT_FPC_CSR		mcontext (fpc_csr)
-+MCONTEXT_USED_MATH		mcontext (used_math)
-+MCONTEXT_DSP			mcontext (dsp)
-+
-+UCONTEXT_SIZE			sizeof (ucontext_t)
-diff --git a/ports/sysdeps/mips/sys/fpregdef.h b/ports/sysdeps/mips/sys/fpregdef.h
-index 3781152..d6c72bb 100644
---- a/ports/sysdeps/mips/sys/fpregdef.h
-+++ b/ports/sysdeps/mips/sys/fpregdef.h
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,92,94,95,96,97,98,2009 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
-@@ -19,19 +19,52 @@
- #ifndef _SYS_FPREGDEF_H
- #define _SYS_FPREGDEF_H
- 
--/*
-- * These definitions only cover the R3000-ish 16/32 register model.
-- * But we're trying to be R3000 friendly anyway ...
-- */
--#define fv0	$f0      /* return value */
--#define fv0f	$f1
-+#include <sgidefs.h>
-+
-+/* Commonalities first, individualities next...  */
-+
-+#define fv0	$f0	/* return value */
- #define fv1	$f2
-+
-+#if _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32
-+#define fs0	$f20	/* callee saved */
-+#define fs1	$f22
-+#define fs2	$f24
-+#define fs3	$f26
-+#define fs4	$f28
-+#define fs5	$f30
-+#endif /* _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32 */
-+
-+#if _MIPS_SIM == _ABI64 || _MIPS_SIM == _ABIN32
-+#define fa0	$f12	/* argument registers */
-+#define fa1	$f13
-+#define fa2	$f14
-+#define fa3	$f15
-+#define fa4	$f16
-+#define fa5	$f17
-+#define fa6	$f18
-+#define fa7	$f19
-+
-+#define ft0	$f4	/* caller saved */
-+#define ft1	$f5
-+#define ft2	$f6
-+#define ft3	$f7
-+#define ft4	$f8
-+#define ft5	$f9
-+#define ft6	$f10
-+#define ft7	$f11
-+#endif /* _MIPS_SIM == _ABI64 || _MIPS_SIM == _ABIN32 */
-+
-+#if _MIPS_SIM == _ABIO32
-+#define fv0f	$f1	/* return value, high part */
- #define fv1f	$f3
--#define fa0	$f12     /* argument registers */
-+
-+#define fa0	$f12	/* argument registers */
- #define fa0f	$f13
- #define fa1	$f14
- #define fa1f	$f15
--#define ft0	$f4      /* caller saved */
-+
-+#define ft0	$f4	/* caller saved */
- #define ft0f	$f5
- #define ft1	$f6
- #define ft1f	$f7
-@@ -43,19 +76,44 @@
- #define ft4f	$f17
- #define ft5	$f18
- #define ft5f	$f19
--#define fs0	$f20     /* callee saved */
--#define fs0f	$f21
--#define fs1	$f22
-+
-+#define fs0f	$f21	/* callee saved, high part */
- #define fs1f	$f23
--#define fs2	$f24
- #define fs2f	$f25
--#define fs3	$f26
- #define fs3f	$f27
--#define fs4	$f28
- #define fs4f	$f29
--#define fs5	$f30
- #define fs5f	$f31
-+#endif /* _MIPS_SIM == _ABIO32 */
-+
-+#if _MIPS_SIM == _ABI64
-+#define ft8	$f20	/* caller saved */
-+#define ft9	$f21
-+#define ft10	$f22
-+#define ft11	$f23
-+#define ft12	$f1
-+#define ft13	$f3
-+
-+#define fs0	$f24	/* callee saved */
-+#define fs1	$f25
-+#define fs2	$f26
-+#define fs3	$f27
-+#define fs4	$f28
-+#define fs5	$f29
-+#define fs6	$f30
-+#define fs7	$f31
-+#endif /* _MIPS_SIM == _ABI64 */
-+
-+#if _MIPS_SIM == _ABIN32
-+#define ft8	$f21	/* caller saved */
-+#define ft9	$f23
-+#define ft10	$f25
-+#define ft11	$f27
-+#define ft12	$f29
-+#define ft13	$f31
-+#define ft14	$f1
-+#define ft15	$f3
-+#endif /* _MIPS_SIM == _ABIN32 */
- 
--#define fcr31	$31      /* FPU status register */
-+#define fcr31	$31	/* FPU status register */
- 
- #endif /* sys/fpregdef.h */

Modified: glibc-package/branches/eglibc-2.10/debian/patches/series
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/series	2009-05-09 23:07:40 UTC (rev 3473)
+++ glibc-package/branches/eglibc-2.10/debian/patches/series	2009-05-09 23:08:53 UTC (rev 3474)
@@ -112,7 +112,6 @@
 
 mips/local-lazy-eval.diff
 mips/local-r10k.diff
-mips/cvs-context.diff
 
 powerpc/local-sysconf.diff
 


Reply to: