CVS commit: src/lib/libc/compat/arch/mips/gen

2016-03-26 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Mar 26 11:57:32 UTC 2016

Modified Files:
src/lib/libc/compat/arch/mips/gen: compat_setjmp.S

Log Message:
Do not store FP registers in softfloat userland


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/compat/arch/mips/gen/compat_setjmp.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/compat/arch/mips/gen/compat_setjmp.S
diff -u src/lib/libc/compat/arch/mips/gen/compat_setjmp.S:1.2 src/lib/libc/compat/arch/mips/gen/compat_setjmp.S:1.3
--- src/lib/libc/compat/arch/mips/gen/compat_setjmp.S:1.2	Mon Dec 14 03:04:33 2009
+++ src/lib/libc/compat/arch/mips/gen/compat_setjmp.S	Sat Mar 26 11:57:32 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat_setjmp.S,v 1.2 2009/12/14 03:04:33 matt Exp $	*/
+/*	$NetBSD: compat_setjmp.S,v 1.3 2016/03/26 11:57:32 martin Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -41,7 +41,7 @@
 #if 0
 	RCSID("from: @(#)setjmp.s	8.1 (Berkeley) 6/4/93")
 #else
-	RCSID("$NetBSD: compat_setjmp.S,v 1.2 2009/12/14 03:04:33 matt Exp $")
+	RCSID("$NetBSD: compat_setjmp.S,v 1.3 2016/03/26 11:57:32 martin Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -111,6 +111,9 @@ NON_LEAF(setjmp, SETJMP_FRAME_SIZE, ra)
 	REG_S	gp, _OFFSETOF_SC_REGS_GP(a0)
 	REG_S	sp, _OFFSETOF_SC_REGS_SP(a0)
 	REG_S	s8, _OFFSETOF_SC_REGS_S8(a0)
+#ifdef SOFTFLOAT_FOR_GCC   
+	INT_S	zero, _OFFSETOF_SC_FPUSED(a0)	# sc_fpused = 0
+#else
 	li	v0, 1# be nice if we could tell
 	INT_S	v0, _OFFSETOF_SC_FPUSED(a0)	# sc_fpused = 1
 	cfc1	v0, $31
@@ -135,6 +138,7 @@ NON_LEAF(setjmp, SETJMP_FRAME_SIZE, ra)
 	FP_S	$f29, _OFFSETOF_SC_FPREGS_F29(a0)
 	FP_S	$f31, _OFFSETOF_SC_FPREGS_F31(a0)
 #endif
+#endif	/* SOFTFLOAT_FOR_GCC */
 	REG_EPILOGUE
 	j	ra
 	move	v0, zero



CVS commit: src/lib/libc/compat/arch/mips

2009-12-13 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Dec 14 03:04:33 UTC 2009

Modified Files:
src/lib/libc/compat/arch/mips/gen: compat_setjmp.S compat_sigsetjmp.S
src/lib/libc/compat/arch/mips/sys: compat_Ovfork.S compat___semctl.S
compat___sigreturn14.S compat___sigtramp1.S compat_sigpending.S
compat_sigprocmask.S compat_sigreturn.S compat_sigsuspend.S

Log Message:
Merge from matt-nb5-mips64


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/compat/arch/mips/gen/compat_setjmp.S \
src/lib/libc/compat/arch/mips/gen/compat_sigsetjmp.S
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/compat/arch/mips/sys/compat_Ovfork.S \
src/lib/libc/compat/arch/mips/sys/compat___sigreturn14.S \
src/lib/libc/compat/arch/mips/sys/compat_sigpending.S \
src/lib/libc/compat/arch/mips/sys/compat_sigprocmask.S \
src/lib/libc/compat/arch/mips/sys/compat_sigreturn.S \
src/lib/libc/compat/arch/mips/sys/compat_sigsuspend.S
cvs rdiff -u -r1.3 -r1.4 src/lib/libc/compat/arch/mips/sys/compat___semctl.S \
src/lib/libc/compat/arch/mips/sys/compat___sigtramp1.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/compat/arch/mips/gen/compat_setjmp.S
diff -u src/lib/libc/compat/arch/mips/gen/compat_setjmp.S:1.1 src/lib/libc/compat/arch/mips/gen/compat_setjmp.S:1.2
--- src/lib/libc/compat/arch/mips/gen/compat_setjmp.S:1.1	Sat Sep 17 11:49:39 2005
+++ src/lib/libc/compat/arch/mips/gen/compat_setjmp.S	Mon Dec 14 03:04:33 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat_setjmp.S,v 1.1 2005/09/17 11:49:39 tsutsui Exp $	*/
+/*	$NetBSD: compat_setjmp.S,v 1.2 2009/12/14 03:04:33 matt Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -32,21 +32,18 @@
  * SUCH DAMAGE.
  */
 
-#include machine/cdefs.h
 #include sys/syscall.h
-#include mips/regnum.h
 #include mips/asm.h
-#include machine/signal.h
-#include machine/setjmp.h
 
-#if defined(LIBC_SCCS)  !defined(lint)
-	ASMSTR(from: @(#)setjmp.s	8.1 (Berkeley) 6/4/93)
-	ASMSTR($NetBSD: compat_setjmp.S,v 1.1 2005/09/17 11:49:39 tsutsui Exp $)
-#endif /* LIBC_SCCS and not lint */
+#include assym.h
 
-#ifdef __ABICALLS__
-	.abicalls
+#if defined(LIBC_SCCS)  !defined(lint)
+#if 0
+	RCSID(from: @(#)setjmp.s	8.1 (Berkeley) 6/4/93)
+#else
+	RCSID($NetBSD: compat_setjmp.S,v 1.2 2009/12/14 03:04:33 matt Exp $)
 #endif
+#endif /* LIBC_SCCS and not lint */
 
 /*
  * C library -- setjmp, longjmp
@@ -59,86 +56,107 @@
  * and a struct sigcontext, see signal.h
  */
 
-#define SETJMP_FRAME_SIZE	(CALLFRAME_SIZ + 12)
+#define SETJMP_FRAME_SIZE	(CALLFRAME_SIZ + STACK_T_SIZE)
 
 NON_LEAF(setjmp, SETJMP_FRAME_SIZE, ra)
-	.mask	0x8000, (CALLFRAME_RA - CALLFRAME_SIZ)
-#ifdef __ABICALLS__
-	.set	noreorder
-	.cpload	t9
-	.set	reorder
-#endif
-	subu	sp, sp, SETJMP_FRAME_SIZE	# allocate stack frame
-#ifdef __ABICALLS__
-	.cprestore 16
-#endif
-	sw	ra, CALLFRAME_RA(sp)		# save state
-	sw	a0, SETJMP_FRAME_SIZE(sp)
-	move	a0, zero			# get current signal mask
-	jal	_C_LABEL(sigblock)
-	lw	v1, SETJMP_FRAME_SIZE(sp)	# v1 = jmpbuf
-	sw	v0, (1 * 4)(v1)			# save sc_mask = sigblock(0)
-	move	a0, zero
-	addu	a1, sp, CALLFRAME_SIZ	# pointer to struct sigaltstack
-	jal	_C_LABEL(__sigaltstack14)
-	lw	a0, SETJMP_FRAME_SIZE(sp)	# restore jmpbuf
-	lw	v1, CALLFRAME_SIZ+8(sp)	# get old ss_onstack
-	and	v1, v1, 1			# extract onstack flag
-	sw	v1, 0(a0)			# save it in sc_onstack
-	lw	ra, CALLFRAME_RA(sp)
-	addu	sp, sp, SETJMP_FRAME_SIZE
-	blt	v0, zero, botch			# check for sigstack() error
+	.mask	0x8001, (CALLFRAME_RA - CALLFRAME_SIZ)
+	SETUP_GP
+	PTR_SUBU	sp, sp, SETJMP_FRAME_SIZE	# allocate stack frame
+	SAVE_GP(CALLFRAME_GP)
+	SETUP_GP64(CALLFRAME_GP, setjmp)
+
+	REG_S		ra, CALLFRAME_RA(sp)		# save RA
+	REG_S		s0, CALLFRAME_S0(sp)		# save S0
+	move		s0, a0# save sigcontext
+
+	/* Get the signal mask. */
+	move		a0, zero			# get current sigmask
+	jal		_C_LABEL(sigblock)
+	nop
+	INT_S		v0, _OFFSETOF_SC_MASK13(s0)	# save sc_mask13
+
+	/* Get the signal stack. */
+	move		a0, zero
+	PTR_ADDU	a1, sp, CALLFRAME_SIZ		# pointer to stack_t
+	jal		_C_LABEL(__sigaltstack14)
+
+	move		a0, s0# restore jmpbuf
+	INT_L		v1, CALLFRAME_SIZ+_OFFSETOF_STACK_T_FLAGS(sp)
+			# get old ss_onstack
+	and		v1, v1, SS_ONSTACK		# extract onstack flag
+	INT_S		v1, _OFFSETOF_SC_ONSTACK(a0)	# save it in sc_onstack
+
+	REG_L		s0, CALLFRAME_S0(sp)		# restore S0
+	REG_L		ra, CALLFRAME_RA(sp)		# restore RA
+	blt		v0, zero, botch		# check for sigaltstack() error
+	nop
+	/*
+	 * We know we won't need this routine's GP anymore.
+	 */
+	RESTORE_GP64
+	PTR_ADDU	sp, sp, SETJMP_FRAME_SIZE	# pop stack frame
+
 	REG_PROLOGUE
-	REG_S	ra, (2 * 4)(a0)			# sc_pc = return address
+	REG_S	ra, _OFFSETOF_SC_PC(a0)		# sc_pc = return address
 	REG_LI	v0, 0xACEDBADE			# sigcontext magic number
-	REG_S	v0, (_OFFSETOF_SC_REGS + SZREG * _R_ZERO)(a0) # saved in sc_regs[0]
-	REG_S	s0, (_OFFSETOF_SC_REGS + SZREG *