]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/sh/kernel/process_32.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[karo-tx-linux.git] / arch / sh / kernel / process_32.c
index 130817affa64c65f25a5f9c6c0bb8692f7a69d5e..ddafbbbab2abe041dbdca39aa000dc4637f21137 100644 (file)
@@ -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)