svn commit: r232884 - head/libexec/rtld-elf/mips

Oleksandr Tymoshenko gonzo at FreeBSD.org
Mon Mar 12 20:25:00 UTC 2012


Author: gonzo
Date: Mon Mar 12 20:24:59 2012
New Revision: 232884
URL: http://svn.freebsd.org/changeset/base/232884

Log:
  - Although we pass first 4 arguments in registers, function callinf ABI requires
     space to be reserved for them in stack. _rtld() prologue saves a1 and a2 in
     this space.
  
  - Whitespace cleanup while I'm at it

Modified:
  head/libexec/rtld-elf/mips/rtld_start.S

Modified: head/libexec/rtld-elf/mips/rtld_start.S
==============================================================================
--- head/libexec/rtld-elf/mips/rtld_start.S	Mon Mar 12 19:29:35 2012	(r232883)
+++ head/libexec/rtld-elf/mips/rtld_start.S	Mon Mar 12 20:24:59 2012	(r232884)
@@ -58,28 +58,30 @@ LEAF(rtld_start)
 
 	PTR_LA	a1, 1f
 	bal	1f
-	 PTR_LA	t0, _C_LABEL(_rtld_relocate_nonplt_self)
+	PTR_LA	t0, _C_LABEL(_rtld_relocate_nonplt_self)
 1:	PTR_SUBU a1, ra, a1		/* relocbase */
 	PTR_LA	a0, _DYNAMIC
 	PTR_ADDU t9, a1, t0
 	jalr	t9			/* _rtld_relocate_nonplt_self(dynp, relocabase) */
-	 PTR_ADDU a0, a1, a0		/* &_DYNAMIC */
+	PTR_ADDU a0, a1, a0		/* &_DYNAMIC */
 
 	move	a0, s0			/* sp */
 	PTR_ADDU a1, sp, 2*PTR_SIZE	/* &our atexit function */
 	PTR_ADDU a2, sp, 3*PTR_SIZE	/* obj_main entry */
+	subu	sp, 4*SZREG		/* ABI requires to reserve memory for 4 regs */
 	PTR_LA	t9, _C_LABEL(_rtld)
 	jalr	t9			/* v0 = _rtld(sp, cleanup, objp) */
-	 nop
+	nop
+	addu	sp, 4*SZREG
 
 	PTR_L	a1, 2*PTR_SIZE(sp)	/* our atexit function */
 	PTR_L	a2, 3*PTR_SIZE(sp)	/* obj_main entry */
 	PTR_ADDU sp, 4*PTR_SIZE		/* readjust stack */
 	move	a0, s0			/* stack pointer */
 	move	t9, v0
+	subu	sp, 4*SZREG		/* ABI requires to reserve memory for 4 regs */
 	jr	t9			/* _start(sp, cleanup, obj); */
-	 move	a3, s3			/* restore ps_strings */
-
+	move	a3, s3			/* restore ps_strings */
 END(rtld_start)
 
 #define	XCALLFRAME_SIZ		(12*SZREG)
@@ -140,7 +142,7 @@ _rtld_bind_start:
 
 	PTR_LA	t9, _C_LABEL(_mips_rtld_bind)
 	jalr	t9
-	 nop
+	nop
 
 	move	sp, s0
 	REG_L	ra, XCALLFRAME_RA(sp)
@@ -159,5 +161,5 @@ _rtld_bind_start:
 	PTR_ADDU sp, XCALLFRAME_SIZ
 	move	t9, v0
 	jr	t9
-	 nop
+	nop
 END(_rtld_bind_start)


More information about the svn-src-head mailing list