Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Jan 2010 19:20:36 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r203218 - in projects/ppc64/sys: powerpc/powerpc sys
Message-ID:  <201001301920.o0UJKaiL083729@svn.freebsd.org>

index | next in thread | raw e-mail

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 */
 };
 
 /*


help

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