anchor.diff:            (t (format t "No free memory for DMA bump pointer???~%")))))
   
   #+nil(add-hook '*early-initialize-hook* 'gc-init-system-memory)
  -
  -(defvar *gc-stack-group* (make-stack-group "GC"
  -                                           :control-stack-size 100000
  -                                           :interruptable nil))
  -(stack-group-preset *gc-stack-group* #'gc-task)
   
   ;;; FIXME: Should use unwind-protect but that conses!!!
   ;;; TODO: Require that this can never nest (ie interrupts are on "all" the time).
  
positive.code: ;;; Additionally, the number of words to allocate must be even to ensure
  ;;; correct alignment.
  (defun %raw-allocate (words &optional area)
    (when (and (boundp '*gc-stack-group*)
               (eql (current-stack-group) *gc-stack-group*))
      (emergency-halt "Allocating from inside the GC!"))
    (ecase area
      ((nil :dynamic)
  
negative.code:     (mumble "complete")
      (clear-gc-light)))
  
  (defun %gc ()
    (when *gc-in-progress*
      (error "Nested GC?!"))
    (unwind-protect
         (progn (setf *gc-in-progress* t)
                (%sti)
                (gc-cycle)
                (%cli))
      (setf *gc-in-progress* nil)))
  
  ;;; This is the fundamental dynamic allocation function.
  