diff -ur linux-2.5.4/arch/i386/kernel/process.c linux/arch/i386/kernel/process.c --- linux-2.5.4/arch/i386/kernel/process.c Mon Feb 11 02:50:06 2002 +++ linux/arch/i386/kernel/process.c Tue Feb 12 19:58:33 2002 @@ -468,6 +468,14 @@ } /* + * Return saved PC of a blocked thread. + */ +unsigned long thread_saved_pc(struct task_struct *tsk) +{ + return ((unsigned long *)tsk->thread.esp)[3]; +} + +/* * No need to lock the MM as we are the last user */ void release_segments(struct mm_struct *mm) diff -ur linux-2.5.4/include/asm-i386/processor.h linux/include/asm-i386/processor.h --- linux-2.5.4/include/asm-i386/processor.h Mon Feb 11 02:50:08 2002 +++ linux/include/asm-i386/processor.h Tue Feb 12 20:03:54 2002 @@ -436,13 +436,8 @@ extern void copy_segments(struct task_struct *p, struct mm_struct * mm); extern void release_segments(struct mm_struct * mm); -/* - * Return saved PC of a blocked thread. - */ -static inline unsigned long thread_saved_pc(struct task_struct *tsk) -{ - return ((unsigned long *)tsk->thread->esp)[3]; -} +/* Return saved PC of a blocked thread. */ +extern unsigned long thread_saved_pc(struct task_struct *tsk); unsigned long get_wchan(struct task_struct *p); #define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)->thread_info))[1019])