summaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/dumpstack.c
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2010-03-15 18:42:07 +0100
committerMike Frysinger <vapier@gentoo.org>2010-05-21 15:40:19 +0200
commit9a95e2f1008ee433c496a81628cdde67acc8e4b1 (patch)
tree44f08c82c40a664f6757da01e3f9e7b7f719afab /arch/blackfin/kernel/dumpstack.c
parentBlackfin: print out the faulting insn in the trace output (diff)
downloadlinux-9a95e2f1008ee433c496a81628cdde67acc8e4b1.tar.xz
linux-9a95e2f1008ee433c496a81628cdde67acc8e4b1.zip
Blackfin: make hardware trace output a little more useful
Decode the vast majority of insns that appear in the trace buffer to get a better idea of what's going on at a glance. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/kernel/dumpstack.c')
-rw-r--r--arch/blackfin/kernel/dumpstack.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/arch/blackfin/kernel/dumpstack.c b/arch/blackfin/kernel/dumpstack.c
index e81392c9d1db..5cfbaa298211 100644
--- a/arch/blackfin/kernel/dumpstack.c
+++ b/arch/blackfin/kernel/dumpstack.c
@@ -18,21 +18,14 @@
*/
static bool is_bfin_call(unsigned short *addr)
{
- unsigned short opcode = 0, *ins_addr;
- ins_addr = (unsigned short *)addr;
+ unsigned int opcode;
- if (!get_instruction(&opcode, ins_addr))
+ if (!get_instruction(&opcode, addr))
return false;
if ((opcode >= 0x0060 && opcode <= 0x0067) ||
- (opcode >= 0x0070 && opcode <= 0x0077))
- return true;
-
- ins_addr--;
- if (!get_instruction(&opcode, ins_addr))
- return false;
-
- if (opcode >= 0xE300 && opcode <= 0xE3FF)
+ (opcode >= 0x0070 && opcode <= 0x0077) ||
+ (opcode >= 0xE3000000 && opcode <= 0xE3FFFFFF))
return true;
return false;