+(define-deprecated-function :early "1.0.53.11" spinlock-value mutex-owner (lock)
+ (mutex-owner lock))
+
+(define-deprecated-function :early "1.0.53.11" get-spinlock grab-mutex (lock)
+ (grab-mutex lock))
+
+(define-deprecated-function :early "1.0.53.11" release-spinlock release-mutex (lock)
+ (release-mutex lock))
+
+(sb!xc:defmacro with-recursive-spinlock ((lock) &body body)
+ (deprecation-warning :early "1.0.53.11" 'with-recursive-spinlock 'with-recursive-lock)
+ `(with-recursive-lock (,lock)
+ ,@body))
+
+(sb!xc:defmacro with-spinlock ((lock) &body body)
+ (deprecation-warning :early "1.0.53.11" 'with-spinlock 'with-mutex)
+ `(with-mutex (,lock)
+ ,@body))
+
+(sb!xc:defmacro without-thread-waiting-for ((&key already-without-interrupts) &body body)
+ (with-unique-names (thread prev)
+ (let ((without (if already-without-interrupts
+ 'progn
+ 'without-interrupts))
+ (with (if already-without-interrupts
+ 'progn
+ 'with-local-interrupts)))
+ `(let* ((,thread *current-thread*)
+ (,prev (progn
+ (barrier (:read))
+ (thread-waiting-for ,thread))))
+ (flet ((exec () ,@body))
+ (if ,prev
+ (,without
+ (unwind-protect
+ (progn
+ (setf (thread-waiting-for ,thread) nil)
+ (barrier (:write))
+ (,with (exec)))
+ ;; If we were waiting on a waitqueue, this becomes a bogus
+ ;; wakeup.
+ (when (mutex-p ,prev)
+ (setf (thread-waiting-for ,thread) ,prev)
+ (barrier (:write)))))
+ (exec)))))))
+
+(sb!xc:defmacro with-mutex ((mutex &key (wait-p t) timeout value)