diff options
author | John Snow <jsnow@redhat.com> | 2015-01-19 15:16:00 -0500 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2015-02-16 14:40:55 +0000 |
commit | 4882f359493cd02d7a5caa7b85d2e1bc4b2f8177 (patch) | |
tree | 3616caabce809895c8caede4342a5ad4781b91b4 /tests/ahci-test.c | |
parent | c12e8293b8ed29d98f9ef563e997c9de8ff10e23 (diff) | |
download | hqemu-4882f359493cd02d7a5caa7b85d2e1bc4b2f8177.zip hqemu-4882f359493cd02d7a5caa7b85d2e1bc4b2f8177.tar.gz |
libqos/ahci: Functional register helpers
Introduce a set of "static inline" register helpers that are intended to
replace the current set of macros with more functional versions that are
better suited to inclusion in libqos than porcelain macros.
As a stopgap measure before eliminating the porcelain macros, define them
to use the new functions defined in the ahci.h header.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1421698563-6977-13-git-send-email-jsnow@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'tests/ahci-test.c')
-rw-r--r-- | tests/ahci-test.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/tests/ahci-test.c b/tests/ahci-test.c index bb98968..25e54b8 100644 --- a/tests/ahci-test.c +++ b/tests/ahci-test.c @@ -47,22 +47,19 @@ static char tmp_path[] = "/tmp/qtest.XXXXXX"; static bool ahci_pedantic; /*** IO macros for the AHCI memory registers. ***/ -#define AHCI_READ(OFST) qpci_io_readl(ahci->dev, ahci->hba_base + (OFST)) -#define AHCI_WRITE(OFST, VAL) qpci_io_writel(ahci->dev, \ - ahci->hba_base + (OFST), (VAL)) -#define AHCI_RREG(regno) AHCI_READ(4 * (regno)) -#define AHCI_WREG(regno, val) AHCI_WRITE(4 * (regno), (val)) -#define AHCI_SET(regno, mask) AHCI_WREG((regno), AHCI_RREG(regno) | (mask)) -#define AHCI_CLR(regno, mask) AHCI_WREG((regno), AHCI_RREG(regno) & ~(mask)) +#define AHCI_READ(OFST) ahci_mread(ahci, (OFST)) +#define AHCI_WRITE(OFST, VAL) ahci_mwrite(ahci, (OFST), (VAL)) +#define AHCI_RREG(regno) ahci_rreg(ahci, (regno)) +#define AHCI_WREG(regno, val) ahci_wreg(ahci, (regno), (val)) +#define AHCI_SET(regno, mask) ahci_set(ahci, (regno), (mask)) +#define AHCI_CLR(regno, mask) ahci_clr(ahci, (regno), (mask)) /*** IO macros for port-specific offsets inside of AHCI memory. ***/ -#define PX_OFST(port, regno) (HBA_PORT_NUM_REG * (port) + AHCI_PORTS + (regno)) -#define PX_RREG(port, regno) AHCI_RREG(PX_OFST((port), (regno))) -#define PX_WREG(port, regno, val) AHCI_WREG(PX_OFST((port), (regno)), (val)) -#define PX_SET(port, reg, mask) PX_WREG((port), (reg), \ - PX_RREG((port), (reg)) | (mask)); -#define PX_CLR(port, reg, mask) PX_WREG((port), (reg), \ - PX_RREG((port), (reg)) & ~(mask)); +#define PX_OFST(port, regno) ahci_px_ofst((port), (regno)) +#define PX_RREG(port, regno) ahci_px_rreg(ahci, (port), (regno)) +#define PX_WREG(port, regno, val) ahci_px_wreg(ahci, (port), (regno), (val)) +#define PX_SET(port, reg, mask) ahci_px_set(ahci, (port), (reg), (mask)) +#define PX_CLR(port, reg, mask) ahci_px_clr(ahci, (port), (reg), (mask)) /*** Function Declarations ***/ static QPCIDevice *get_ahci_device(uint32_t *fingerprint); |