anchor.diff:                   ;; Mark read-only.
                    (setf (sys.int::memref-unsigned-byte-64 pte 0) (logand (sys.int::memref-unsigned-byte-64 pte 0)
                                                                           (lognot +page-table-write+))))))))
  -    ;; Flush TLB.
  -    (setf (sys.int::%cr3) (sys.int::%cr3))))
  +    (flush-tlb)))
   
   (defun wait-for-page (address)
     #+(or)(debug-print-line "WFP " address)
  
positive.code:         (when (and pte (logtest +page-table-present+ (sys.int::memref-unsigned-byte-64 pte 0)))
            (release-vm-page (ash (sys.int::memref-unsigned-byte-64 pte 0) -12))
            (setf (sys.int::memref-unsigned-byte-64 pte 0) 0))))
      ;; Flush TLB.
      (setf (sys.int::%cr3) (sys.int::%cr3))))
  
  (defun protect-memory-range (base length flags)
    (assert (zerop (logand (logior base length) #xFFF)) () "Range not page aligned.")
  
negative.code: (defconstant +page-table-global+         #x100)
  (defconstant +page-table-copy-on-write+  #x400)
  (defconstant +page-table-address-mask+   #x000FFFFFFFFFF000)
  
  (declaim (inline flush-tlb))
  (defun flush-tlb ()
    ;; Reloading CR3 on x86oids causes all TLBs to be marked invalid.
    (setf (sys.int::%cr3) (sys.int::%cr3)))
  
  (defun detect-paging-disk ()
    (dolist (disk (all-disks))
  