-#define HBA_RCAP 0
-#define HBA_RGHC 1
-#define HBA_RIS 2
-#define HBA_RPI 3
-#define HBA_RVER 4
-
-#define HBA_RPBASE (0x40)
-#define HBA_RPSIZE (0x80 >> 2)
-#define HBA_RPxCLB 0
-#define HBA_RPxFB 2
-#define HBA_RPxIS 4
-#define HBA_RPxIE 5
-#define HBA_RPxCMD 6
-#define HBA_RPxTFD 8
-#define HBA_RPxSIG 9
-#define HBA_RPxSSTS 10
-#define HBA_RPxSCTL 11
-#define HBA_RPxSERR 12
-#define HBA_RPxSACT 13
-#define HBA_RPxCI 14
-#define HBA_RPxSNTF 15
-#define HBA_RPxFBS 16
-
-#define HBA_PxCMD_FRE (1 << 4)
-#define HBA_PxCMD_CR (1 << 15)
-#define HBA_PxCMD_FR (1 << 14)
-#define HBA_PxCMD_ST (1)
-#define HBA_PxINTR_DMA (1 << 2)
-#define HBA_PxINTR_D2HR (1)
-
-#define HBA_RGHC_ACHI_ENABLE (1 << 31)
-#define HBA_RGHC_INTR_ENABLE (1 << 1)
-#define HBA_RGHC_RESET 1
-
-#define HBA_RPxSSTS_PWR(x) (((x) >> 8) & 0xf)
-#define HBA_RPxSSTS_IF(x) (((x) >> 4) & 0xf)
-#define HBA_RPxSSTS_PHYSTATE(x) ((x)&0xf)
-
-#define HBA_DEV_SIG_ATAPI 0xeb140101
-#define HBA_DEV_SIG_ATA 0x00000101
-
-#define __HBA_PACKED__ __attribute__((packed))
-
-typedef unsigned int hba_reg_t;
-
-#define HBA_CMDH_FIS_LEN(fis_bytes) (((fis_bytes) / 4) & 0x1f)
-#define HBA_CMDH_ATAPI (1 << 5)
-#define HBA_CMDH_WRITE (1 << 6)
-#define HBA_CMDH_PREFETCH (1 << 7)
-#define HBA_CMDH_R (1 << 8)
-#define HBA_CMDH_CLR_BUSY (1 << 10)
-#define HBA_CMDH_PRDT_LEN(entries) (((entries)&0xffff) << 16)
-
-struct ahci_hba_cmdh