Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Mar 2010 19:12:40 +0000 (UTC)
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r204527 - user/jmallett/octeon/lib/libc/mips
Message-ID:  <201003011912.o21JCe68091385@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jmallett
Date: Mon Mar  1 19:12:40 2010
New Revision: 204527
URL: http://svn.freebsd.org/changeset/base/204527

Log:
  Add n32 and n64 style PIC prologues, etc.
  
  Submitted by:	imp

Modified:
  user/jmallett/octeon/lib/libc/mips/SYS.h

Modified: user/jmallett/octeon/lib/libc/mips/SYS.h
==============================================================================
--- user/jmallett/octeon/lib/libc/mips/SYS.h	Mon Mar  1 18:58:18 2010	(r204526)
+++ user/jmallett/octeon/lib/libc/mips/SYS.h	Mon Mar  1 19:12:40 2010	(r204527)
@@ -79,10 +79,19 @@
  */
 #ifdef __ABICALLS__
 	.abicalls
-# define PIC_PROLOGUE(x,sr)	.set noreorder; .cpload sr; .set reorder
+#if defined (__mips_n64) || defined(__mips_n32)
+# define PIC_PROLOGUE(x,sr)     subu sp,sp,8; sd gp, 0(sp); .cpsetup $25, $24, ## x;
+# define PIC_RESTORE            ld  gp, 0(sp); addu sp,sp,8;
+# define PIC_CALL(l,sr)		la sr, _C_LABEL(l); ld  gp, 0(sp); addu sp,sp,8; jr sr
+#else
+# define PIC_PROLOGUE(x,sr)	.set noreorder; .cpload sr; .set reorder 
+# define PIC_RESTORE            
 # define PIC_CALL(l,sr)		la sr, _C_LABEL(l); jr sr
+#endif
+
 #else
 # define PIC_PROLOGUE(x,sr)
+# define PIC_RESTORE
 # define PIC_CALL(l,sr)		j  _C_LABEL(l)
 #endif
 
@@ -123,6 +132,8 @@ LEAF(__sys_ ## x);							\
 	PIC_PROLOGUE(x,t9);						\
 	SYSTRAP(x);							\
 	bne a3,zero,err;						\
+	nop;								\
+	PIC_RESTORE;							\
 	j ra;								\
 err:									\
 	PIC_CALL(__cerror,t9);						\



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