On Fri, Aug 07, 2020 at 09:25:25PM +0800, Jiaxun Yang wrote: > > > 在 2020/8/7 21:13, Thomas Bogendoerfer 写道: > >On Wed, Aug 05, 2020 at 09:51:44PM +0800, Jiaxun Yang wrote: > >>>yes there is. Since this COP2 is a total black box to me, it would be > >>>really helpfull to get some docs for it or at least some information what > >>>it exactly does and how you want to use it in kernel code. > >>FYI: > >>Loongson doesn't have any CU2 register. It just reused LWC2 & LDC2 opcode > >>to define some load & store instructions (e.g. 128bit load to two GPRs). > >> > >>I have a collection of these instructions here[1]. > >> > >> From GS464E (3A2000+), execuating these instruction won't produce COP2 > >>unusable > >>exception. But older Loongson cores (GS464) will still produce COP2 > >>exception, thus > >>we should have CU2 enabled in kernel. That would allow us use to these > >>instructions > >>to optimize kernel. > >thank you that makes things a little bit clearer. > > > >How will this be used in kernel code ? Special assembler routines or > >by enabling gcc options ? > > Via special assembly routines, as -msoft-float will disable generation of > these instructions in GCC. > > I knew Huacai have out-of-tree memcpy optimization and Xuerui have > RAID5 optimiztion with these instructions. > > > > >>>And finally what I stil don't like is the splittering of more > >>>#ifdef LOONGSON into common code. I'd prefer a more generic way > >>>to enable COPx for in kernel usage. Maybe a more generic config option > >>>or a dynamic solution like the one for user land. > >>Agreed. some Kconfig options or cpuinfo_mips.options can be helpful. > >let's see whether this really is needed. > > > >To me it looks like the COP2 exception support for loongson makes > >thing worse than it helps. How about the patch below ? There is still > >a gap between starting the kernel and COP2 enabled for which I'm not > >sure, if we are hitting COP2 instructions. > > Yes, the exception does not really make sense. > What's your opinion Huacai? > > For in-kernel usage, we still have to enable it in genex. you shouldn't need any other changes. ST0_CU2 will be set in configure_status() and not touched after that. Thomas. -- Crap can work. Given enough thrust pigs will fly, but it's not necessarily a good idea. [ RFC1925, 2.3 ]