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>
