svn commit: r203218 - in projects/ppc64/sys: powerpc/powerpc sys

Nathan Whitehorn nwhitehorn at FreeBSD.org
Sat Jan 30 19:20:36 UTC 2010


Author: nwhitehorn
Date: Sat Jan 30 19:20:36 2010
New Revision: 203218
URL: http://svn.freebsd.org/changeset/base/203218

Log:
  Fix argc passing in an alternative way by changing nargvstr and nenvstr to
  be unsigned long instead of int. This preserves argument passing
  conventions on sparc64, and eliminates hacks on powerpc64.

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

Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c
==============================================================================
--- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c	Sat Jan 30 19:16:41 2010	(r203217)
+++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c	Sat Jan 30 19:20:36 2010	(r203218)
@@ -524,9 +524,9 @@ exec_setregs(struct thread *td, u_long e
          * Emulate by setting the syscall return value cells. The
          * registers still have to be set for init's fork trampoline.
          */
-        td->td_retval[0] = *((register_t *)(&arginfo.ps_nargvstr));
+        td->td_retval[0] = arginfo.ps_nargvstr;
         td->td_retval[1] = (register_t)arginfo.ps_argvstr;
-	tf->fixreg[3] = *((register_t *)(&arginfo.ps_nargvstr));
+	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 */

Modified: projects/ppc64/sys/sys/exec.h
==============================================================================
--- projects/ppc64/sys/sys/exec.h	Sat Jan 30 19:16:41 2010	(r203217)
+++ projects/ppc64/sys/sys/exec.h	Sat Jan 30 19:20:36 2010	(r203218)
@@ -48,9 +48,9 @@
  */
 struct ps_strings {
 	char	**ps_argvstr;	/* first of 0 or more argument strings */
-	unsigned int ps_nargvstr; /* the number of argument strings */
+	unsigned long ps_nargvstr; /* the number of argument strings */
 	char	**ps_envstr;	/* first of 0 or more environment strings */
-	unsigned int ps_nenvstr; /* the number of environment strings */
+	unsigned long ps_nenvstr; /* the number of environment strings */
 };
 
 /*


More information about the svn-src-projects mailing list