
From: <gerg@snapgear.com>

Some kernel janitor clean ups of printk for the m68knommu specific process
code.

And more importantly a fix to the kernel_thread() asm code to correctly
return the pid back to the return var from the clone system call.


---

 25-akpm/arch/m68knommu/kernel/process.c |   61 ++++++++++++++++----------------
 1 files changed, 31 insertions(+), 30 deletions(-)

diff -puN arch/m68knommu/kernel/process.c~m68knommu-kernel_thread-fix arch/m68knommu/kernel/process.c
--- 25/arch/m68knommu/kernel/process.c~m68knommu-kernel_thread-fix	Tue Apr  6 15:38:22 2004
+++ 25-akpm/arch/m68knommu/kernel/process.c	Tue Apr  6 15:38:22 2004
@@ -95,17 +95,17 @@ EXPORT_SYMBOL(machine_power_off);
 
 void show_regs(struct pt_regs * regs)
 {
-	printk("\n");
-	printk("Format %02x  Vector: %04x  PC: %08lx  Status: %04x    %s\n",
+	printk(KERN_NOTICE "\n");
+	printk(KERN_NOTICE "Format %02x  Vector: %04x  PC: %08lx  Status: %04x    %s\n",
 	       regs->format, regs->vector, regs->pc, regs->sr, print_tainted());
-	printk("ORIG_D0: %08lx  D0: %08lx  A2: %08lx  A1: %08lx\n",
+	printk(KERN_NOTICE "ORIG_D0: %08lx  D0: %08lx  A2: %08lx  A1: %08lx\n",
 	       regs->orig_d0, regs->d0, regs->a2, regs->a1);
-	printk("A0: %08lx  D5: %08lx  D4: %08lx\n",
+	printk(KERN_NOTICE "A0: %08lx  D5: %08lx  D4: %08lx\n",
 	       regs->a0, regs->d5, regs->d4);
-	printk("D3: %08lx  D2: %08lx  D1: %08lx\n",
+	printk(KERN_NOTICE "D3: %08lx  D2: %08lx  D1: %08lx\n",
 	       regs->d3, regs->d2, regs->d1);
 	if (!(regs->sr & PS_S))
-		printk("USP: %08lx\n", rdusp());
+		printk(KERN_NOTICE "USP: %08lx\n", rdusp());
 }
 
 /*
@@ -113,7 +113,7 @@ void show_regs(struct pt_regs * regs)
  */
 int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
 {
-	long retval;
+	int retval;
 	long clone_arg = flags | CLONE_VM;
 	mm_segment_t fs;
 
@@ -131,7 +131,8 @@ int kernel_thread(int (*fn)(void *), voi
 			"jsr	%4@\n\t"
 			"movel	%2, %%d0\n\t"
 			"trap	#0\n"
-			"1:"
+			"1:\n\t"
+			"movel	%%d0, %0\n"
 		: "=d" (retval)
 		: "i" (__NR_clone),
 		  "i" (__NR_exit),
@@ -328,58 +329,58 @@ void dump(struct pt_regs *fp)
 	unsigned char	*tp;
 	int		i;
 
-	printk("\nCURRENT PROCESS:\n\n");
-	printk("COMM=%s PID=%d\n", current->comm, current->pid);
+	printk(KERN_EMERG "\nCURRENT PROCESS:\n\n");
+	printk(KERN_EMERG "COMM=%s PID=%d\n", current->comm, current->pid);
 
 	if (current->mm) {
-		printk("TEXT=%08x-%08x DATA=%08x-%08x BSS=%08x-%08x\n",
+		printk(KERN_EMERG "TEXT=%08x-%08x DATA=%08x-%08x BSS=%08x-%08x\n",
 			(int) current->mm->start_code,
 			(int) current->mm->end_code,
 			(int) current->mm->start_data,
 			(int) current->mm->end_data,
 			(int) current->mm->end_data,
 			(int) current->mm->brk);
-		printk("USER-STACK=%08x  KERNEL-STACK=%08x\n\n",
+		printk(KERN_EMERG "USER-STACK=%08x  KERNEL-STACK=%08x\n\n",
 			(int) current->mm->start_stack,
 			(int)(((unsigned long) current) + KTHREAD_SIZE));
 	}
 
-	printk("PC: %08lx\n", fp->pc);
-	printk("SR: %08lx    SP: %08lx\n", (long) fp->sr, (long) fp);
-	printk("d0: %08lx    d1: %08lx    d2: %08lx    d3: %08lx\n",
+	printk(KERN_EMERG "PC: %08lx\n", fp->pc);
+	printk(KERN_EMERG "SR: %08lx    SP: %08lx\n", (long) fp->sr, (long) fp);
+	printk(KERN_EMERG "d0: %08lx    d1: %08lx    d2: %08lx    d3: %08lx\n",
 		fp->d0, fp->d1, fp->d2, fp->d3);
-	printk("d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
+	printk(KERN_EMERG "d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
 		fp->d4, fp->d5, fp->a0, fp->a1);
-	printk("\nUSP: %08x   TRAPFRAME: %08x\n", (unsigned int) rdusp(),
+	printk(KERN_EMERG "\nUSP: %08x   TRAPFRAME: %08x\n", (unsigned int) rdusp(),
 		(unsigned int) fp);
 
-	printk("\nCODE:");
+	printk(KERN_EMERG "\nCODE:");
 	tp = ((unsigned char *) fp->pc) - 0x20;
 	for (sp = (unsigned long *) tp, i = 0; (i < 0x40);  i += 4) {
 		if ((i % 0x10) == 0)
-			printk("\n%08x: ", (int) (tp + i));
-		printk("%08x ", (int) *sp++);
+			printk(KERN_EMERG "\n%08x: ", (int) (tp + i));
+		printk(KERN_EMERG "%08x ", (int) *sp++);
 	}
-	printk("\n");
+	printk(KERN_EMERG "\n");
 
-	printk("\nKERNEL STACK:");
+	printk(KERN_EMERG "\nKERNEL STACK:");
 	tp = ((unsigned char *) fp) - 0x40;
 	for (sp = (unsigned long *) tp, i = 0; (i < 0xc0); i += 4) {
 		if ((i % 0x10) == 0)
-			printk("\n%08x: ", (int) (tp + i));
-		printk("%08x ", (int) *sp++);
+			printk(KERN_EMERG "\n%08x: ", (int) (tp + i));
+		printk(KERN_EMERG "%08x ", (int) *sp++);
 	}
-	printk("\n");
-	printk("\n");
+	printk(KERN_EMERG "\n");
+	printk(KERN_EMERG "\n");
 
-	printk("\nUSER STACK:");
+	printk(KERN_EMERG "\nUSER STACK:");
 	tp = (unsigned char *) (rdusp() - 0x10);
 	for (sp = (unsigned long *) tp, i = 0; (i < 0x80); i += 4) {
 		if ((i % 0x10) == 0)
-			printk("\n%08x: ", (int) (tp + i));
-		printk("%08x ", (int) *sp++);
+			printk(KERN_EMERG "\n%08x: ", (int) (tp + i));
+		printk(KERN_EMERG "%08x ", (int) *sp++);
 	}
-	printk("\n\n");
+	printk(KERN_EMERG "\n\n");
 }
 
 /*

_
