diff options
| author | Paul Burton <paul.burton@imgtec.com> | 2017-03-12 08:12:09 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2017-03-12 08:12:09 +0000 |
| commit | dfba5f8f76c339c3c2ad115ac16f731b23465d35 (patch) | |
| tree | 76fe1ad4c02547e651834b94139d3593576f3434 | |
| parent | 6e3b0aea46d3693aa0525fb4cd85d0dabcd6e1c9 (diff) | |
| parent | d75d675a05525cd31047d414434129c047ffa585 (diff) | |
MIPS: Fix is_jump_ins() handling of 16b microMIPS instructions
am: d75d675a05
Change-Id: I21332f13b7cb7a85cca19151ef909445879e2b44
| -rw-r--r-- | arch/mips/kernel/process.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 96ed8e7d4bac..2be2d94b6f2b 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c @@ -237,9 +237,14 @@ static inline int is_jump_ins(union mips_instruction *ip) * * microMIPS is kind of more fun... */ - if ((ip->mm16_r5_format.opcode == mm_pool16c_op && - (ip->mm16_r5_format.rt & mm_jr16_op) == mm_jr16_op) || - ip->j_format.opcode == mm_jal32_op) + if (mm_insn_16bit(ip->halfword[1])) { + if ((ip->mm16_r5_format.opcode == mm_pool16c_op && + (ip->mm16_r5_format.rt & mm_jr16_op) == mm_jr16_op)) + return 1; + return 0; + } + + if (ip->j_format.opcode == mm_jal32_op) return 1; if (ip->r_format.opcode != mm_pool32a_op || ip->r_format.func != mm_pool32axf_op) |
