On Wed, Sep 23, 2020 at 8:23 AM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > On Wed, Sep 23, 2020 at 08:03:20AM +0800, Guo Ren wrote: > > Thx Duan, > > > > Acked-by: Guo Ren <guoren@xxxxxxxxxx> > > > > Hi AI, > > > > I found the broken commit still has a question: > > > > > commit dcad7854fcce6a2d49b6a3ead5bbefeff047e559 > > > Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > > > Date: Tue Jun 16 15:28:29 2020 -0400 > > > > > csky: switch to ->regset_get() > > > > > NB: WTF "- what the fuck :(" is fpregs_get() playing at??? > > The fpregs_get() is for REGSET_FPR regset used by ptrace (gdb) and all > > fp regs are stored in threads' context. > > So, WTF question for? > > The part under > #if defined(CONFIG_CPU_HAS_FPUV2) && !defined(CONFIG_CPU_HAS_VDSP) > > What's going on there? The mapping is really weird - assuming > you had v0..v31 in the first 32 elements of regs->vr[], you > end up with > > v0 v1 v2 v3 v2 v3 v6 v7 v4 v5 v10 v11 v6 v7 v14 v15 > v8 v9 v18 v19 v10 v11 v22 v23 v12 v13 v26 v27 v14 v15 v30 v31 > > in the beginning of the output. Assuming it is the intended > behaviour, it's probably worth some comments... FPU & VDSP use the same regs. 32 FPU regs' width is 64b and 16 VDSP regs' width is 128b. vr[0], vr[1] = fp[0] & vr[0] vr[1], vr[2], vr[3] = vdsp reg[0] ... vr[60], vr[61] = fp[15] & vr[60] vr[61], vr[62], vr[63] = vdsp reg[15] vr[64], vr[65] = fp[16] vr[66], vr[67] = fp[17] ... vr[94], vr[95] = fp[31] Yeah, this is confusing and I'll add a comment later. -- Best Regards Guo Ren ML: https://lore.kernel.org/linux-csky/