anchor.diff:      ;; Map each area in. Image is loaded to #x200000.
       (let ((phys #x200000))
         (dolist (area *area-info*)
  -        (let ((len (ceiling (first area) #x40000))
  +        ;; Guarantee at least 2MB of free space for runtime-allocation-area and function-area.
  +        (let ((len (+ (ceiling (first area) #x40000)
  +                      (if (or (eql (first (fifth area)) 'runtime-allocation-area)
  +                              (eql (first (fifth area)) 'function-area))
  +                          1
  +                          0)))
                 (virtual (second area)))
             (dotimes (i len)
               (setf (word (+ data-pml2 virtual i)) (logior phys
  
positive.code:   (let ((32-bit-base 1) ; 2MB
          (64-bit-base 1024)) ; 2GB
      (iter (for (name allocation-mode initial-size 32-bit) in areas)
            (format t "Area ~S begins at word ~X~%" name (* (if 32-bit 32-bit-base 64-bit-base) #x40000))
            (collect (list 0 ; free pointer.
                           (if 32-bit 32-bit-base 64-bit-base) ; offset.
  
negative.code:                            (:dynamic
                              (if 32-bit
                                  (incf 32-bit-base initial-size)
                                  (incf 64-bit-base initial-size))))
                           area))
              (if 32-bit
                  (incf 32-bit-base initial-size)
                  (incf 64-bit-base initial-size)))))
  