#ifndef __SOC_OTX2_ASM_H
#define __SOC_OTX2_ASM_H
#include <linux/types.h>
#if defined(CONFIG_ARM64)
#define otx2_lmt_flush …
#define cn10k_lmt_flush …
static inline u64 otx2_atomic64_fetch_add(u64 incr, u64 *ptr)
{
u64 result;
asm volatile (".cpu generic+lse\n"
"ldadda %x[i], %x[r], [%[b]]"
: [r] "=r" (result), "+m" (*ptr)
: [i] "r" (incr), [b] "r" (ptr)
: "memory");
return result;
}
#else
#define otx2_lmt_flush(ioaddr) …
#define cn10k_lmt_flush(val, addr) …
#define otx2_atomic64_fetch_add(incr, ptr) …
#endif
#endif