svn commit: r205203 - user/jmallett/octeon/lib/libc/mips/sys

Juli Mallett jmallett at FreeBSD.org
Tue Mar 16 04:31:13 UTC 2010


Author: jmallett
Date: Tue Mar 16 04:31:13 2010
New Revision: 205203
URL: http://svn.freebsd.org/changeset/base/205203

Log:
  Make ptrace save/restore gp properly like cerror.
  
  Sponsored by:	Packet Forensics

Modified:
  user/jmallett/octeon/lib/libc/mips/sys/ptrace.S

Modified: user/jmallett/octeon/lib/libc/mips/sys/ptrace.S
==============================================================================
--- user/jmallett/octeon/lib/libc/mips/sys/ptrace.S	Tue Mar 16 01:52:03 2010	(r205202)
+++ user/jmallett/octeon/lib/libc/mips/sys/ptrace.S	Tue Mar 16 04:31:13 2010	(r205203)
@@ -43,25 +43,29 @@ __FBSDID("$FreeBSD$");
 
 NESTED_NOPROFILE(ptrace, CALLFRAME_SIZ, ra)
 	.mask	0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ)
-	PIC_PROLOGUE(ptrace)
-	PTR_SUBU sp, sp, CALLFRAME_SP
-	REG_S	ra, CALLFRAME_RA(sp)
-
+	SETUP_GP
+	PTR_SUBU	sp, sp, CALLFRAME_SIZ
+	SETUP_GP64(CALLFRAME_GP, ptrace)
 	SAVE_GP(CALLFRAME_GP)
 
-	PTR_LA	t9, _C_LABEL(__error)	# locate address of errno
-	jalr	t9
+	PTR_S		ra, CALLFRAME_RA(sp)
 
-	INT_S	zero, 0(v0)
+	PTR_LA		t9, _C_LABEL(__error)	# locate address of errno
+	jalr		t9
 
-	REG_L	ra, CALLFRAME_RA(sp)
-	PTR_ADDU sp, sp, CALLFRAME_SIZ
+	PTR_L		ra, CALLFRAME_RA(sp)
+	INT_S		zero, 0(v0)		# update errno value
 
-	li	v0, SYS_ptrace
+	li		v0, SYS_ptrace
 	syscall
 
-	bne	a3, zero, 1f
-	PIC_RETURN()
+	RESTORE_GP64
+	PTR_ADDU	sp, sp, CALLFRAME_SIZ
+
+	bne		a3, zero, 1f
+
+	j		ra
 1:
-	PIC_TAILCALL(__cerror)
+	PTR_LA		t9, __cerror
+	jalr		t9
 END(ptrace)


More information about the svn-src-user mailing list