[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1365016497-32033-3-git-send-email-tj@kernel.org>
Date: Wed, 3 Apr 2013 12:14:52 -0700
From: Tejun Heo <tj@...nel.org>
To: linux-arch@...r.kernel.org, linux-kernel@...r.kernel.org,
akpm@...ux-foundation.org, mingo@...hat.com, x86@...nel.org
Cc: rth@...ddle.net, linux@....linux.org.uk, msalter@...hat.com,
starvik@...s.com, dhowells@...hat.com, tony.luck@...el.com,
benh@...nel.crashing.org, takata@...ux-m32r.org,
geert@...ux-m68k.org, james.hogan@...tec.com, monstr@...str.eu,
ralf@...ux-mips.org, jonas@...thpole.se, rkuo@...eaurora.org,
schwidefsky@...ibm.com, liqin.chen@...plusct.com,
davem@...emloft.net, lethal@...ux-sh.org, vgupta@...opsys.com,
chris@...kel.net, cmetcalf@...era.com, ysato@...rs.sourceforge.jp,
gxt@...c.pku.edu.cn, jdike@...toit.com, Tejun Heo <tj@...nel.org>
Subject: [PATCH 2/7] 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@...nel.org>
Acked-by: David S. Miller <davem@...emloft.net>
---
arch/sparc/kernel/process_32.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index 62eede1..0d57b24 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -153,11 +153,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? */
@@ -175,11 +177,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);
--
1.8.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists