Date: Thu, 28 Jan 2010 05:28:49 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r203107 - projects/ppc64/sys/powerpc/powerpc Message-ID: <201001280528.o0S5Sn98040452@svn.freebsd.org>
index | next in thread | raw e-mail
Author: nwhitehorn Date: Thu Jan 28 05:28:48 2010 New Revision: 203107 URL: http://svn.freebsd.org/changeset/base/203107 Log: Fix passing argc to user space. MI code uses suword, which copies a 64-bit quantity, but arginfo.ps_nargvstr is an unsigned int. Thus, it ended up being always zero when read back with copyin() on big-endian 64-bit systems. This fixes argument passing to 64-bit executables. 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 Thu Jan 28 04:50:09 2010 (r203106) +++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Thu Jan 28 05:28:48 2010 (r203107) @@ -526,7 +526,7 @@ exec_setregs(struct thread *td, u_long e */ td->td_retval[0] = arginfo.ps_nargvstr; td->td_retval[1] = (register_t)arginfo.ps_argvstr; - tf->fixreg[3] = arginfo.ps_nargvstr; + tf->fixreg[3] = *((register_t *)(&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 */help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001280528.o0S5Sn98040452>
