On Tue, Jul 06, 2021 at 02:59:22PM +0200, Arnd Bergmann wrote:
On Tue, Jul 6, 2021 at 1:23 PM Peter Zijlstra [off-list ref] wrote:
quoted
On Tue, Jul 06, 2021 at 12:18:05PM +0800, Huacai Chen wrote:
quoted
quoted
+
+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 :/