From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932468AbbCMSIw (ORCPT ); Fri, 13 Mar 2015 14:08:52 -0400 Received: from mail-wg0-f43.google.com ([74.125.82.43]:46206 "EHLO mail-wg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932419AbbCMSHt (ORCPT ); Fri, 13 Mar 2015 14:07:49 -0400 From: Alex Dowad To: linux-kernel@vget.kernel.org Cc: Steven Miao , adi-buildroot-devel@lists.sourceforge.net (moderated list:BLACKFIN ARCHITEC...), linux-kernel@vger.kernel.org (open list) Subject: [PATCH 07/32] blackfin: copy_thread(): rename 'topstk' argument to 'kthread_arg' Date: Fri, 13 Mar 2015 20:04:22 +0200 Message-Id: <1426269888-25600-7-git-send-email-alexinbeijing@gmail.com> X-Mailer: git-send-email 2.0.0.GIT In-Reply-To: <1426269888-25600-1-git-send-email-alexinbeijing@gmail.com> References: <1426269888-25600-1-git-send-email-alexinbeijing@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 'topstk' is a misnomer: it is not a pointer to the top of a stack. Rather, it is an argument passed to the main function executed by a new kernel thread. Signed-off-by: Alex Dowad --- arch/blackfin/kernel/process.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 4aa5545..81cdd5f 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c @@ -109,9 +109,12 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp) return do_fork(clone_flags, newsp, 0, NULL, NULL); } +/* + * Copy architecture-specific thread state + */ int copy_thread(unsigned long clone_flags, - unsigned long usp, unsigned long topstk, + unsigned long usp, unsigned long kthread_arg, struct task_struct *p) { struct pt_regs *childregs; @@ -120,14 +123,16 @@ copy_thread(unsigned long clone_flags, childregs = (struct pt_regs *) (task_stack_page(p) + THREAD_SIZE) - 1; v = ((unsigned long *)childregs) - 2; if (unlikely(p->flags & PF_KTHREAD)) { + /* kernel thread */ memset(childregs, 0, sizeof(struct pt_regs)); v[0] = usp; - v[1] = topstk; + v[1] = kthread_arg; childregs->orig_p0 = -1; childregs->ipend = 0x8000; __asm__ __volatile__("%0 = syscfg;":"=da"(childregs->syscfg):); p->thread.usp = 0; } else { + /* user thread */ *childregs = *current_pt_regs(); childregs->r0 = 0; p->thread.usp = usp ? : rdusp(); -- 2.0.0.GIT