Maybe like this (again untested):
#+:sbcl (defvar *locks* nil)
#-:sbcl (defmacro with-lock-held* ((lock) &body body) `(kmrcl::with-lock-held (,lock) ,@body))
#+:sbcl (defmacro with-lock-held* ((lock) &body body) (with-rebinding (lock) `(cond ((find ,lock *locks*) ,@body) (t (let ((*locks* (cons ,lock *locks*))) (kmrcl::with-lock-held (,lock) ,@body))))))