From e36b37583bebd229102f46c4ed7d2f6fad8697d4 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 23 Jul 2021 13:24:09 +0200 Subject: Adding upstream version 0.6.0. Signed-off-by: Daniel Baumann --- regressions/ck_spinlock/linux_spinlock.h | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 regressions/ck_spinlock/linux_spinlock.h (limited to 'regressions/ck_spinlock/linux_spinlock.h') diff --git a/regressions/ck_spinlock/linux_spinlock.h b/regressions/ck_spinlock/linux_spinlock.h new file mode 100644 index 0000000..5fe1f3e --- /dev/null +++ b/regressions/ck_spinlock/linux_spinlock.h @@ -0,0 +1,39 @@ +#include + +CK_CC_INLINE static void +spin_lock(volatile unsigned int *lock) +{ +#ifdef __x86_64__ + __asm__ __volatile__( + "\n1:\t" + "lock ; decl %0\n\t" + "jns 2f\n" + "3:\n" + "rep;nop\n\t" + "cmpl $0,%0\n\t" + "jle 3b\n\t" + "jmp 1b\n" + "2:\t" : "=m" (*lock) : : "memory"); +#else + *lock = 1; +#endif + + return; +} + +CK_CC_INLINE static void +spin_unlock(volatile unsigned int *lock) +{ +#ifdef __x86_64__ + __asm__ __volatile__("movl $1,%0" :"=m" (*lock) :: "memory"); +#else + *lock = 0; + return; +#endif +} + +#define LOCK_NAME "linux_spinlock" +#define LOCK_DEFINE volatile unsigned int lock = 1 +#define LOCK spin_lock(&lock) +#define UNLOCK spin_unlock(&lock) + -- cgit v1.2.3