anchor.diff:             (mezzano.supervisor:with-pseudo-atomic
                (tagbody
                 INNER-LOOP
  -                (when (> (+ sys.int::*general-area-bump* (* words 8)) sys.int::*general-area-limit*)
  -                  (go EXPAND-AREA))
  -                ;; Enough size, allocate here.
  -                (let ((addr (logior (ash sys.int::+address-tag-general+ sys.int::+address-tag-shift+)
  -                                    sys.int::*general-area-bump*
  -                                    sys.int::*dynamic-mark-bit*)))
  -                  (incf sys.int::*general-area-bump* (* words 8))
  -                  ;; Write array header.
  -                  (set-allocated-object-header addr tag data 0)
  -                  (return-from %slow-allocate-from-general-area
  -                    (sys.int::%%assemble-value addr sys.int::+tag-object+)))
  -              EXPAND-AREA
  +                (multiple-value-bind (result ignore1 ignore2 failurep)
  +                    (%do-allocate-from-general-area tag data words)
  +                  (declare (ignore ignore1 ignore2))
  +                  (when (not failurep)
  +                    (return-from %slow-allocate-from-general-area
  +                      result)))
                   ;; No memory. If there's memory available, then expand the area, otherwise run the GC.
                   ;; Running the GC cannot be done when pseudo-atomic.
                   (cond ((expand-allocation-area "general"
  
positive.code:   (:d64/le #.(logior (ash sys.int::+address-tag-cons+ sys.int::+address-tag-shift+)
                       sys.int::+tag-cons+)))
  
  #-(or x86-64 arm64)
  (defun cons (car cdr)
    (sys.int::%atomic-fixnum-add-symbol '*cons-allocation-count* 1)
    (slow-cons car cdr))
  
  (defun slow-cons (car cdr)
    (when sys.int::*gc-in-progress*
  
negative.code:       (when mezzano.supervisor::*pager-noisy*
          (mezzano.supervisor:debug-print-line "A-M-R oldspace failed."))
        (return-from expand-allocation-area-1 nil))
      ;; Atomically store the new limit, other CPUs may be reading the value.
      (sys.int::%atomic-fixnum-add-symbol limit-symbol expansion))
    t)
  
  (defun expand-allocation-area (name granularity-symbol limit-symbol address-tag)
  