From owner-svn-src-all@FreeBSD.ORG Mon May 24 17:24:14 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 962CB106567C; Mon, 24 May 2010 17:24:14 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6B43D8FC1E; Mon, 24 May 2010 17:24:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4OHOEVb065151; Mon, 24 May 2010 17:24:14 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OHOEuE065147; Mon, 24 May 2010 17:24:14 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005241724.o4OHOEuE065147@svn.freebsd.org> From: Konstantin Belousov Date: Mon, 24 May 2010 17:24:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208514 - in head/sys/ia64: ia32 ia64 include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 17:24:14 -0000 Author: kib Date: Mon May 24 17:24:14 2010 New Revision: 208514 URL: http://svn.freebsd.org/changeset/base/208514 Log: Change ia64' struct syscall_args definition so that args is a pointer to the arguments array instead of array itself. ia64 syscall arguments are readily available in the frame, point args to it, do not do unnecessary bcopy. Still reserve the array in syscall_args for ia32 emulation. Suggested and reviewed by: marcel MFC after: 1 month Modified: head/sys/ia64/ia32/ia32_trap.c head/sys/ia64/ia64/trap.c head/sys/ia64/include/proc.h Modified: head/sys/ia64/ia32/ia32_trap.c ============================================================================== --- head/sys/ia64/ia32/ia32_trap.c Mon May 24 17:23:14 2010 (r208513) +++ head/sys/ia64/ia32/ia32_trap.c Mon May 24 17:24:14 2010 (r208514) @@ -132,10 +132,11 @@ ia32_fetch_syscall_args(struct thread *t error = copyin(params, (caddr_t)args, sa->narg * sizeof(int)); else error = 0; + sa->args = &sa->args32[0]; if (error == 0) { for (i = 0; i < sa->narg; i++) - sa->args[i] = args[i]; + sa->args32[i] = args[i]; td->td_retval[0] = 0; td->td_retval[1] = tf->tf_scratch.gr10; /* edx */ } Modified: head/sys/ia64/ia64/trap.c ============================================================================== --- head/sys/ia64/ia64/trap.c Mon May 24 17:23:14 2010 (r208513) +++ head/sys/ia64/ia64/trap.c Mon May 24 17:24:14 2010 (r208514) @@ -902,13 +902,12 @@ cpu_fetch_syscall_args(struct thread *td { struct proc *p; struct trapframe *tf; - register_t *args; p = td->td_proc; tf = td->td_frame; sa->code = tf->tf_scratch.gr15; - args = &tf->tf_scratch.gr16; + sa->args = &tf->tf_scratch.gr16; /* * syscall() and __syscall() are handled the same on @@ -918,8 +917,8 @@ cpu_fetch_syscall_args(struct thread *td /* * Code is first argument, followed by actual args. */ - sa->code = args[0]; - args++; + sa->code = sa->args[0]; + sa->args++; } if (p->p_sysent->sv_mask) @@ -929,7 +928,6 @@ cpu_fetch_syscall_args(struct thread *td else sa->callp = &p->p_sysent->sv_table[sa->code]; sa->narg = sa->callp->sy_narg; - bcopy(args, sa->args, sa->narg * sizeof(sa->args[0])); td->td_retval[0] = 0; td->td_retval[1] = 0; Modified: head/sys/ia64/include/proc.h ============================================================================== --- head/sys/ia64/include/proc.h Mon May 24 17:23:14 2010 (r208513) +++ head/sys/ia64/include/proc.h Mon May 24 17:24:14 2010 (r208514) @@ -45,7 +45,8 @@ struct mdproc { struct syscall_args { u_int code; struct sysent *callp; - register_t args[8]; + register_t *args; + register_t args32[8]; int narg; }; #define HAVE_SYSCALL_ARGS_DEF 1