if (esp == NULL) esp = (unsigned long *) &esp; 
if (!stack) { if (task) stack = (unsigned long *)task->thread.ksp; else stack = (unsigned long *)&stack; } 
void show_stack(struct task_struct *task, unsigned long *esp){	unsigned long *stack, *endstack, addr;	extern char _start, _etext;	int i;	if (esp == NULL)		esp = (unsigned long *) &esp;	stack = esp;	addr = (unsigned long) esp;	endstack = (unsigned long *) PAGE_ALIGN(addr);	printk(KERN_EMERG "Stack from %08lx:", (unsigned long)stack);	for (i = 0; i < kstack_depth_to_print; i++) {		if (stack + 1 > endstack)			break;		if (i % 8 == 0)			printk(KERN_EMERG "\n       ");		printk(KERN_EMERG " %08lx", *stack++);	}	printk(KERN_EMERG "\nCall Trace:");	i = 0;	while (stack + 1 <= endstack) {		addr = *stack++;		/*		 * If the address is either in the text segment of the		 * kernel, or in the region which contains vmalloc'ed		 * memory, it *may* be the address of a calling		 * routine; if so, print it so that someone tracing		 * down the cause of the crash will be able to figure		 * out the call path that was taken.		 */		if (((addr >= (unsigned long) &_start) &&		     (addr <= (unsigned long) &_etext))) {			if (i % 4 == 0)				printk(KERN_EMERG "\n       ");			printk(KERN_EMERG " [<%08lx>]", addr);			i++;		}	}	printk(KERN_EMERG "\n");}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/db81fb8486563573aca023dac30a2d70c46855e8/traps.c/clean/arch/m68knommu/kernel/traps.c