aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/dumpstack.c
diff options
context:
space:
mode:
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;