Merge remote branch 'origin/sparc-dev'
[akaros.git] / kern / arch / i386 / atomic.h
index 1674f86..7e2e5cf 100644 (file)
@@ -32,6 +32,7 @@ static inline void atomic_set(atomic_t *number, int32_t val);
 static inline void atomic_inc(atomic_t *number);
 static inline void atomic_dec(atomic_t *number);
 static inline void atomic_andb(volatile uint8_t RACY* number, uint8_t mask);
+static inline void atomic_orb(volatile uint8_t RACY* number, uint8_t mask);
 static inline uint32_t spin_locked(spinlock_t *SAFE lock);
 static inline void __spin_lock(volatile uint32_t SRACY*CT(1) rlock);
 static inline void spin_lock(spinlock_t *lock);
@@ -73,6 +74,11 @@ static inline void atomic_andb(volatile uint8_t RACY*number, uint8_t mask)
        asm volatile("lock andb %1,%0" : "=m"(*number) : "r"(mask) : "cc");
 }
 
+static inline void atomic_orb(volatile uint8_t RACY*number, uint8_t mask)
+{
+       asm volatile("lock orb %1,%0" : "=m"(*number) : "r"(mask) : "cc");
+}
+
 static inline uint32_t spin_locked(spinlock_t *SAFE lock)
 {
        // the lock status is the lowest byte of the lock