[MIPS] Make get_frame_info() more robust
Now get_frame_info() wants to detect move sp instruction first. It assumes that the save ra in the stack instruction can't happen before allocating frame size space into the stack. Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
1666a6fc73
commit
0cceb4aa9a
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user