anchor.diff:  ;; The idle thread is not a true thread. It does not appear in all-threads, nor in any run-queue.
   ;; When the machine boots, one idle thread is created for each core. When a core is idle, the
   ;; idle thread will be run.
  +;; FIXME: SMP-safety.
   (defun idle-thread ()
  -  (without-interrupts
  -    (loop
  -       (sys.int::%stihlt)
  -       (sys.int::%cli))))
  +  (loop
  +     (sys.int::%cli)
  +     ;; Look for a thread to switch to.
  +     (let ((next (with-symbol-spinlock (*global-thread-lock*)
  +                   (pop-run-queue))))
  +       (cond (next
  +              ;; Switch to thread.
  +              (%lock-thread *idle-thread*)
  +              (%lock-thread next)
  +              (setf (thread-state next) :active)
  +              (%%switch-to-thread *idle-thread* next))
  +             (t ;; Wait for an interrupt.
  +              (sys.int::%stihlt))))))
   
   (defun initialize-threads ()
     (when (not (boundp '*global-thread-lock*))
  
positive.code:       (unlock-wait-queue condition-variable)
        (%reschedule)
        ;; Got woken up. Reacquire the mutex.
        (acquire-mutex lock t)))
    (values))
  
  (defun condition-notify (condition-variable &optional broadcast)
  
negative.code:   (sys.lap-x86:ret))
  
  (defun establish-deferred-footholds (thread)
    (declare (ignore self)))
  
  (defun establish-thread-foothold (thread function)
    (cond ((eql thread (current-thread))
  