On 11/22/21 12:41 PM, gaosong wrote:
Hi Richard,
On 2021/11/20 下午6:33, Richard Henderson wrote:
Drop all of the the inline markers.
+{
+ int i;
+
+ __put_user(env->pc, &sc->sc_pc);
+
+ __put_user(0, &sc->sc_gpr[0]);
+ for (i = 1; i < 32; ++i) {
+ __put_user(env->gpr[i], &sc->sc_gpr[i]);
+ }
+
+ for (i = 0; i < 32; ++i) {
+ __put_user(env->fpr[i], &sc->sc_fpr[i]);
+ }
+}
Missing fcsr and fcc.
I'll note that the kernel is missing sets of vscr and scr[0-3]. IMO they should at least
be zeroed in advance of supporting the vector extension.
I see that vcsr set at [1]:178.
[1]
https://github.com/loongson/linux/blob/loongarch-next/arch/loongarch/kernel/signal.c
That happens after line 171:
if (likely(!err))
break;
It seems most unlikely that there would be an error...
There is a macro for sc_save_vcsr in fpu.S, but it isn't used.
r~