forked from luck/tmp_suning_uos_patched
MIPS: Loongson-3: Calculate ra properly when unwinding the stack
Loongson-3 has 16-bytes load/store instructions: gslq and gssq. This patch calculate ra properly when unwinding the stack, if ra is saved by gssq and restored by gslq. Signed-off-by: Huacai Chen <chenhc@lemote.com> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
This commit is contained in:
parent
195615ecc8
commit
bc1c969f11
|
@ -279,7 +279,21 @@ static inline int is_ra_save_ins(union mips_instruction *ip, int *poff)
|
|||
*poff = ip->i_format.simmediate / sizeof(ulong);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CPU_LOONGSON64
|
||||
if ((ip->loongson3_lswc2_format.opcode == swc2_op) &&
|
||||
(ip->loongson3_lswc2_format.ls == 1) &&
|
||||
(ip->loongson3_lswc2_format.fr == 0) &&
|
||||
(ip->loongson3_lswc2_format.base == 29)) {
|
||||
if (ip->loongson3_lswc2_format.rt == 31) {
|
||||
*poff = ip->loongson3_lswc2_format.offset << 1;
|
||||
return 1;
|
||||
}
|
||||
if (ip->loongson3_lswc2_format.rq == 31) {
|
||||
*poff = (ip->loongson3_lswc2_format.offset << 1) + 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user