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>
                *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
 }