Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Mar 2010 01:37:00 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r205571 - projects/ppc64/sys/powerpc/powerpc
Message-ID:  <201003240137.o2O1b0Y5049438@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Wed Mar 24 01:37:00 2010
New Revision: 205571
URL: http://svn.freebsd.org/changeset/base/205571

Log:
  Bring the new argument setup stuff along to ppc32_setregs().

Modified:
  projects/ppc64/sys/powerpc/powerpc/exec_machdep.c

Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c
==============================================================================
--- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c	Tue Mar 23 23:56:22 2010	(r205570)
+++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c	Wed Mar 24 01:37:00 2010	(r205571)
@@ -563,23 +563,23 @@ exec_setregs(struct thread *td, struct i
 void
 ppc32_setregs(struct thread *td, struct image_params *imgp, u_long stack)
 {
-	struct trapframe		*tf;
-	struct freebsd32_ps_strings	arginfo;
+	struct trapframe	*tf;
+	uint32_t		argc;
 
 	tf = trapframe(td);
 	bzero(tf, sizeof *tf);
 	tf->fixreg[1] = -roundup(-stack + 8, 16);
 
-	(void)copyin((char *)FREEBSD32_PS_STRINGS, &arginfo, sizeof(arginfo));
+	argc = fuword32(stack);
 
-        td->td_retval[0] = arginfo.ps_nargvstr;
-        td->td_retval[1] = (register_t)arginfo.ps_argvstr;
-	tf->fixreg[3] = arginfo.ps_nargvstr;
-	tf->fixreg[4] = (register_t)arginfo.ps_argvstr;
-	tf->fixreg[5] = (register_t)arginfo.ps_envstr;
-	tf->fixreg[6] = 0;			/* auxillary vector */
-	tf->fixreg[7] = 0;			/* termination vector */
-	tf->fixreg[8] = (register_t)FREEBSD32_PS_STRINGS; /* NetBSD extension */
+        td->td_retval[0] = argc;
+        td->td_retval[1] = stack + sizeof(uint32_t);
+	tf->fixreg[3] = argc;
+	tf->fixreg[4] = stack + sizeof(uint32_t);
+	tf->fixreg[5] = stack + (2 + argc)*sizeof(uint32_t);
+	tf->fixreg[6] = 0;				/* auxillary vector */
+	tf->fixreg[7] = 0;				/* termination vector */
+	tf->fixreg[8] = (register_t)imgp->ps_strings;	/* NetBSD extension */
 
 	tf->srr0 = imgp->entry_addr;
 	tf->srr1 = PSL_MBO | PSL_USERSET | PSL_FE_DFLT;



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