From b6dcaa5220061848d72059640f554e7c1fd01c86 Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Wed, 17 Dec 2008 12:20:15 +0900 Subject: [PATCH] --- yaml --- r: 120139 b: refs/heads/master c: 43f8f9b95b65dc05368cd82268895b9508b17d50 h: refs/heads/master i: 120137: 10cc4195da1a4c49cbf867fcd89cdb747fa66c5b 120135: 48a0ecae96dcc24a13caf1c0dc021d92a9a6367f v: v3 --- [refs] | 2 +- trunk/arch/sh/kernel/process_32.c | 19 ++++--------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index 84ad284aab43..4ecf0a489000 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7b80fb32b39a51ce3e1afa051f5a616eb8ecbed3 +refs/heads/master: 43f8f9b95b65dc05368cd82268895b9508b17d50 diff --git a/trunk/arch/sh/kernel/process_32.c b/trunk/arch/sh/kernel/process_32.c index 130817affa64..ddafbbbab2ab 100644 --- a/trunk/arch/sh/kernel/process_32.c +++ b/trunk/arch/sh/kernel/process_32.c @@ -97,21 +97,10 @@ void show_regs(struct pt_regs * regs) /* * Create a kernel thread */ - -/* - * This is the mechanism for creating a new kernel thread. - * - */ -extern void kernel_thread_helper(void); -__asm__(".align 5\n" - "kernel_thread_helper:\n\t" - "jsr @r5\n\t" - " nop\n\t" - "mov.l 1f, r1\n\t" - "jsr @r1\n\t" - " mov r0, r4\n\t" - ".align 2\n\t" - "1:.long do_exit"); +ATTRIB_NORET void kernel_thread_helper(void *arg, int (*fn)(void *)) +{ + do_exit(fn(arg)); +} /* Don't use this in BL=1(cli). Or else, CPU resets! */ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)