|
@@ -207,41 +207,4 @@ static inline void __downgrade_write(struct rw_semaphore *sem)
|
|
|
rwsem_downgrade_wake(sem);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * implement atomic add functionality
|
|
|
- */
|
|
|
-static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
|
|
|
-{
|
|
|
- signed long old, new;
|
|
|
-
|
|
|
- asm volatile(
|
|
|
- " lg %0,%2\n"
|
|
|
- "0: lgr %1,%0\n"
|
|
|
- " agr %1,%4\n"
|
|
|
- " csg %0,%1,%2\n"
|
|
|
- " jl 0b"
|
|
|
- : "=&d" (old), "=&d" (new), "=Q" (sem->count)
|
|
|
- : "Q" (sem->count), "d" (delta)
|
|
|
- : "cc", "memory");
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * implement exchange and add functionality
|
|
|
- */
|
|
|
-static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
|
|
|
-{
|
|
|
- signed long old, new;
|
|
|
-
|
|
|
- asm volatile(
|
|
|
- " lg %0,%2\n"
|
|
|
- "0: lgr %1,%0\n"
|
|
|
- " agr %1,%4\n"
|
|
|
- " csg %0,%1,%2\n"
|
|
|
- " jl 0b"
|
|
|
- : "=&d" (old), "=&d" (new), "=Q" (sem->count)
|
|
|
- : "Q" (sem->count), "d" (delta)
|
|
|
- : "cc", "memory");
|
|
|
- return new;
|
|
|
-}
|
|
|
-
|
|
|
#endif /* _S390_RWSEM_H */
|