On Tue, Jul 06, 2021 at 02:59:22PM +0200, Arnd Bergmann wrote: > On Tue, Jul 6, 2021 at 1:23 PM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > > > > On Tue, Jul 06, 2021 at 12:18:05PM +0800, Huacai Chen wrote: > > > > + > > > +static inline u32 csr_xchgl(u32 val, u32 mask, u32 reg) > > > +{ > > > + return __csrxchg(val, mask, reg); > > > +} > > > + > > > +static inline u64 csr_xchgq(u64 val, u64 mask, u32 reg) > > > +{ > > > + return __dcsrxchg(val, mask, reg); > > > +} > > > > What are these __csrfoo() things, I cannot seem to find a definition of > > them anywhere.. > > It seems that those are provided as compiler intrinsics in <larchintrin.h>, > based on an architecture specific __builtin_loongarch_csrxchg() etc. Thanks, I couldn't find them. > The specific registers are documented at > https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN#control-and-status-registers Bah, that's terrible naming. CSRWR really is CSRXCHG and CSRXCHG is more like CSRXCHGMASK or something :/