diff options
author | Robin Getz <robin.getz@analog.com> | 2010-03-15 18:42:07 +0100 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2010-05-21 15:40:19 +0200 |
commit | 9a95e2f1008ee433c496a81628cdde67acc8e4b1 (patch) | |
tree | 44f08c82c40a664f6757da01e3f9e7b7f719afab /arch/blackfin/kernel/dumpstack.c | |
parent | Blackfin: print out the faulting insn in the trace output (diff) | |
download | linux-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.c | 15 |
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; |