Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Mar 2010 01:52:03 +0000 (UTC)
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r205202 - user/jmallett/octeon/lib/libc/mips/sys
Message-ID:  <201003160152.o2G1q3Mh039622@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jmallett
Date: Tue Mar 16 01:52:03 2010
New Revision: 205202
URL: http://svn.freebsd.org/changeset/base/205202

Log:
  Properly save and restore the GP on the stack in __cerror, rather than using
  PIC_PROLOGUE which simply saves and restores it to a temporary register, as is
  sufficient for syscalls but not for function calls.
  
  Submitted by:	C. Jayachandran (original version)

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

Modified: user/jmallett/octeon/lib/libc/mips/sys/cerror.S
==============================================================================
--- user/jmallett/octeon/lib/libc/mips/sys/cerror.S	Tue Mar 16 01:48:40 2010	(r205201)
+++ user/jmallett/octeon/lib/libc/mips/sys/cerror.S	Tue Mar 16 01:52:03 2010	(r205202)
@@ -47,21 +47,26 @@ __FBSDID("$FreeBSD$");
 	.globl	_C_LABEL(__error)
 NESTED_NOPROFILE(__cerror, CALLFRAME_SIZ, ra)
 	.mask	0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ)
-	PIC_PROLOGUE(__cerror)
+	SETUP_GP
 	PTR_SUBU	sp, sp, CALLFRAME_SIZ
-	PTR_S		ra, CALLFRAME_RA(sp)
-	INT_S		v0, CALLFRAME_S0(sp)	# save errno value
-
+	SETUP_GP64(CALLFRAME_GP, __cerror)
 	SAVE_GP(CALLFRAME_GP)
 
+	PTR_S		ra, CALLFRAME_RA(sp)
+	REG_S		v0, CALLFRAME_S0(sp)	# save errno value
+
 	PTR_LA		t9, _C_LABEL(__error)	# locate address of errno
 	jalr		t9
 
-	INT_L		t0, CALLFRAME_S0(sp)
+	REG_L		t0, CALLFRAME_S0(sp)
 	PTR_L		ra, CALLFRAME_RA(sp)
 	INT_S		t0, 0(v0)		# update errno value
+
+	RESTORE_GP64
 	PTR_ADDU	sp, sp, CALLFRAME_SIZ
+
 	li		v0, -1
 	li		v1, -1
-	PIC_RETURN()
+
+	j		ra
 END(__cerror)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003160152.o2G1q3Mh039622>