diff options
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 @@ | |||
18 | */ | 18 | */ |
19 | static bool is_bfin_call(unsigned short *addr) | 19 | static 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; |