1/* 2 * Copyright 2008 Google Inc. All Rights Reserved. 3 * Author: md@google.com (Michael Davidson) 4 * 5 * Based on time-warp-test.c, which is: 6 * Copyright (C) 2005, Ingo Molnar 7 */ 8 9#ifndef SPINLOCK_H_ 10#define SPINLOCK_H_ 11 12typedef unsigned long spinlock_t; 13 14static inline void spin_lock(spinlock_t *lock) 15{ 16 __asm__ __volatile__( 17 "1: rep; nop\n" 18 " lock; btsl $0,%0\n" 19 "jc 1b\n" 20 : "=g"(*lock) : : "memory"); 21} 22 23static inline void spin_unlock(spinlock_t *lock) 24{ 25 __asm__ __volatile__("movl $0,%0; rep; nop" : "=g"(*lock) :: "memory"); 26} 27 28#endif /* SPINLOCK_H_ */ 29