anchor.diff:                                                                              sys.int::+block-map-present+))
                    (zero-cached-block id))
                  (read-cached-block id))))
  -      (let* ((bml4e (ldb (byte 9 39) address))
  -             (bml3e (ldb (byte 9 30) address))
  -             (bml2e (ldb (byte 9 21) address))
  -             (bml1e (ldb (byte 9 12) address))
  +      (let* ((bml4e (address-l4-bits address))
  +             (bml3e (address-l3-bits address))
  +             (bml2e (address-l2-bits address))
  +             (bml1e (address-l1-bits address))
                (bml4 (read-cached-block *bml4-block*))
                (bml3 (read-level bml4 bml4e))
                (bml2 (read-level bml3 bml3e))
  
positive.code: 
  (defun get-pte-for-address (address &optional (allocate t))
    (let ((cr3 (+ +physical-map-base+ (logand (sys.int::%cr3) (lognot #xFFF))))
          (pml4e (ldb (byte 9 39) address))
          (pdpe (ldb (byte 9 30) address))
          (pde (ldb (byte 9 21) address))
          (pte (ldb (byte 9 12) address)))
      (when (not (page-present-p cr3 pml4e))
        ;; No PDP. Allocate one.
        (when (not allocate)
  
negative.code:         (when (eql (ldb (byte sys.int::+address-tag-size+ sys.int::+address-tag-shift+) address)
                     sys.int::+address-tag-stack+)
            (let ((cr3 (+ +physical-map-base+ (logand (sys.int::%cr3) (lognot #xFFF))))
                  (pml4e (address-l4-bits address))
                  (other-pml4e (address-l4-bits (logior address (ash 1 sys.int::+address-mark-bit+)))))
              ;; Keep access bit set, if already set.
              (setf (page-table-entry cr3 other-pml4e) (logior (page-table-entry cr3 pml4e)
                                                               (logand (page-table-entry cr3 other-pml4e)
  