anchor.diff:    (setf *ata-devices* '()))
   
   (defun ata-pci-register (location)
  -  (let* ((prdt-page (allocate-physical-pages 1 "ATA PRDT page")))
  +  (let* ((prdt-page (allocate-physical-pages 1 "ATA PRDT page" t)))
       ;; Make sure to enable PCI bus mastering for this device.
       (setf (pci-config/16 location +pci-config-command+) (logior (pci-config/16 location +pci-config-command+)
                                                                   ;; Bit 2 is Bus Master bit.
  
positive.code:       (return-from ata-write t))
      (with-mutex ((ata-controller-command-lock controller))
        (with-mutex ((ata-controller-access-lock controller))
          (if (<= +physical-map-base+
                  mem-addr
                  ;; 4GB limit.
                  (+ +physical-map-base+ (* 4 1024 1024 1024)))
              (ata-write-dma controller device lba count (- mem-addr +physical-map-base+))
              (ata-write-pio controller device lba count mem-addr)))))
    t)
  
  (defun ata-irq-handler (irq)
  
negative.code: 
  (defun init-ata-controller (command-base control-base bus-master-register prdt-phys irq)
    (debug-print-line "New controller at " command-base " " control-base " " bus-master-register " " irq)
    (let* ((dma32-bounce-buffer (allocate-physical-pages 1 "ATA DMA bounce buffer" t))
           (controller (make-ata-controller :command command-base
                                            :control control-base
                                            :bus-master-register bus-master-register
                                            :prdt-phys prdt-phys
                                            :irq irq
                                            :bounce-buffer dma32-bounce-buffer)))
      ;; Disable IRQs on the controller and reset both drives.
      (setf (sys.int::io-port/8 (+ control-base +ata-register-device-control+))
            (logior +ata-srst+ +ata-nien+))
  