aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/mips/kernel/process.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index da332d707ce5..309bfa4a1520 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -321,17 +321,15 @@ static int get_frame_info(struct mips_frame_info *info)
if (is_jal_jalr_jr_ins(ip))
break;
- if (is_sp_move_ins(ip)) {
- if (info->frame_size)
- continue;
- info->frame_size = - ip->i_format.simmediate;
+ if (!info->frame_size) {
+ if (is_sp_move_ins(ip))
+ info->frame_size = - ip->i_format.simmediate;
+ continue;
}
-
- if (is_ra_save_ins(ip)) {
- if (info->pc_offset != -1)
- continue;
+ if (info->pc_offset == -1 && is_ra_save_ins(ip)) {
info->pc_offset =
ip->i_format.simmediate / sizeof(long);
+ break;
}
}
if (info->frame_size && info->pc_offset >= 0) /* nested */