mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-11 23:50:25 +00:00
sparc32: make show_stack() acquire %fp if @_ksp is not specified
show_stack(current or NULL, NULL) is used by arch-independent code to dump backtrace of the current task; however, sparc32 show_stack() doesn't implement it and wouldn't print any backtrace when NULL @_ksp is specfied. Make show_stack() acquire and use %fp if @tsk is NULL or current and @_ksp is NULL. This makes %fp fetching in dump_stack() unnecessary. Make it use NULL for @_ksp instead. Only compile tested. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: David S. Miller <davem@davemloft.net> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Fengguang Wu <fengguang.wu@intel.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Jesper Nilsson <jesper.nilsson@axis.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Mike Frysinger <vapier@gentoo.org> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a77f2a4e6f
commit
89e3f23da9
@ -142,11 +142,13 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
|
||||
struct reg_window32 *rw;
|
||||
int count = 0;
|
||||
|
||||
if (tsk != NULL)
|
||||
task_base = (unsigned long) task_stack_page(tsk);
|
||||
else
|
||||
task_base = (unsigned long) current_thread_info();
|
||||
if (!tsk)
|
||||
tsk = current;
|
||||
|
||||
if (tsk == current && !_ksp)
|
||||
__asm__ __volatile__("mov %%fp, %0" : "=r" (_ksp));
|
||||
|
||||
task_base = (unsigned long) task_stack_page(tsk);
|
||||
fp = (unsigned long) _ksp;
|
||||
do {
|
||||
/* Bogus frame pointer? */
|
||||
@ -164,11 +166,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
|
||||
|
||||
void dump_stack(void)
|
||||
{
|
||||
unsigned long *ksp;
|
||||
|
||||
__asm__ __volatile__("mov %%fp, %0"
|
||||
: "=r" (ksp));
|
||||
show_stack(current, ksp);
|
||||
show_stack(current, NULL);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
Loading…
x
Reference in New Issue
Block a user