aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/dumpstack.c
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2010-03-15 13:42:07 -0400
committerMike Frysinger <vapier@gentoo.org>2010-05-21 09:40:19 -0400
commit9a95e2f1008ee433c496a81628cdde67acc8e4b1 (patch)
tree44f08c82c40a664f6757da01e3f9e7b7f719afab /arch/blackfin/kernel/dumpstack.c
parentd60805ad470aef52465f3dc982212f559d9f661b (diff)
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 @@
18 */ 18 */
19static bool is_bfin_call(unsigned short *addr) 19static bool is_bfin_call(unsigned short *addr)
20{ 20{
21 unsigned short opcode = 0, *ins_addr; 21 unsigned int opcode;
22 ins_addr = (unsigned short *)addr;
23 22
24 if (!get_instruction(&opcode, ins_addr)) 23 if (!get_instruction(&opcode, addr))
25 return false; 24 return false;
26 25
27 if ((opcode >= 0x0060 && opcode <= 0x0067) || 26 if ((opcode >= 0x0060 && opcode <= 0x0067) ||
28 (opcode >= 0x0070 && opcode <= 0x0077)) 27 (opcode >= 0x0070 && opcode <= 0x0077) ||
29 return true; 28 (opcode >= 0xE3000000 && opcode <= 0xE3FFFFFF))
30
31 ins_addr--;
32 if (!get_instruction(&opcode, ins_addr))
33 return false;
34
35 if (opcode >= 0xE300 && opcode <= 0xE3FF)
36 return true; 29 return true;
37 30
38 return false; 31 return false;