From 3553f1894dc98c2124813b2393aa9e80f11de2bb Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 21 Jun 2010 23:22:19 +0000 Subject: [PATCH] Use the correct type for physical addresses. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37219 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../busses/scsi/ahci/ahci_controller.cpp | 7 +++--- .../kernel/busses/scsi/ahci/ahci_port.cpp | 4 ++-- src/add-ons/kernel/busses/scsi/ahci/util.cpp | 23 ++++++++++--------- src/add-ons/kernel/busses/scsi/ahci/util.h | 6 +++-- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp index a1748ad900..541a2382f5 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp @@ -105,11 +105,12 @@ AHCIController::Init() return B_ERROR; } - void *addr = (void *)pciInfo.u.h0.base_registers[5]; + phys_addr_t addr = pciInfo.u.h0.base_registers[5]; size_t size = pciInfo.u.h0.base_register_sizes[5]; - TRACE("registers at %p, size %#lx\n", addr, size); - if (!addr) { + TRACE("registers at %#" B_PRIxPHYSADDR ", size %#" B_PRIxSIZE "\n", addr, + size); + if (addr == 0) { TRACE("PCI base address register 5 not assigned\n"); return B_ERROR; } diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp index e82bce708c..43637e96e1 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp @@ -75,9 +75,9 @@ AHCIPort::Init1() + sizeof(prd) * PRD_TABLE_ENTRY_COUNT; char *virtAddr; - char *physAddr; + phys_addr_t physAddr; - fArea = alloc_mem((void **)&virtAddr, (void **)&physAddr, size, 0, + fArea = alloc_mem((void **)&virtAddr, &physAddr, size, 0, "some AHCI port"); if (fArea < B_OK) { TRACE("failed allocating memory for port %d\n", fIndex); diff --git a/src/add-ons/kernel/busses/scsi/ahci/util.cpp b/src/add-ons/kernel/busses/scsi/ahci/util.cpp index ce774e32da..7733540e83 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/util.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/util.cpp @@ -22,10 +22,9 @@ round_to_pagesize(uint32 size) area_id -alloc_mem(void **virt, void **phy, size_t size, uint32 protection, +alloc_mem(void **virt, phys_addr_t *phy, size_t size, uint32 protection, const char *name) { -// TODO: phy should be phys_addr_t*! physical_entry pe; void * virtadr; area_id areaid; @@ -49,7 +48,7 @@ alloc_mem(void **virt, void **phy, size_t size, uint32 protection, if (virt) *virt = virtadr; if (phy) - *phy = (void*)(addr_t)pe.address; + *phy = pe.address; TRACE("area = %ld, size = %ld, virt = %p, phy = %#" B_PRIxPHYSADDR "\n", areaid, size, virtadr, pe.address); return areaid; @@ -57,20 +56,21 @@ alloc_mem(void **virt, void **phy, size_t size, uint32 protection, area_id -map_mem(void **virt, void *phy, size_t size, uint32 protection, +map_mem(void **virt, phys_addr_t phy, size_t size, uint32 protection, const char *name) { uint32 offset; - void *phyadr; + phys_addr_t phyadr; void *mapadr; area_id area; - TRACE("mapping physical address %p with %ld bytes for %s\n", phy, size, name); + TRACE("mapping physical address %#" B_PRIxPHYSADDR " with %" B_PRIuSIZE + " bytes for %s\n", phy, size, name); - offset = (uint32)phy & (B_PAGE_SIZE - 1); - phyadr = (char *)phy - offset; + offset = phy & (B_PAGE_SIZE - 1); + phyadr = phy - offset; size = round_to_pagesize(size + offset); - area = map_physical_memory(name, (addr_t)phyadr, size, + area = map_physical_memory(name, phyadr, size, B_ANY_KERNEL_BLOCK_ADDRESS, protection, &mapadr); if (area < B_OK) { ERROR("mapping '%s' failed, error 0x%lx (%s)\n", name, area, strerror(area)); @@ -79,8 +79,9 @@ map_mem(void **virt, void *phy, size_t size, uint32 protection, *virt = (char *)mapadr + offset; - TRACE("physical = %p, virtual = %p, offset = %ld, phyadr = %p, mapadr = %p, size = %ld, area = 0x%08lx\n", - phy, *virt, offset, phyadr, mapadr, size, area); + TRACE("physical = %#" B_PRIxPHYSADDR ", virtual = %p, offset = %ld, " + "phyadr = %#" B_PRIxPHYSADDR ", mapadr = %p, size = %ld, area = " + "0x%08lx\n", phy, *virt, offset, phyadr, mapadr, size, area); return area; } diff --git a/src/add-ons/kernel/busses/scsi/ahci/util.h b/src/add-ons/kernel/busses/scsi/ahci/util.h index afb2a14f3b..94fc1ac94c 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/util.h +++ b/src/add-ons/kernel/busses/scsi/ahci/util.h @@ -11,8 +11,10 @@ extern "C" { #endif -area_id alloc_mem(void **virt, void **phy, size_t size, uint32 protection, const char *name); -area_id map_mem(void **virt, void *phy, size_t size, uint32 protection, const char *name); +area_id alloc_mem(void **virt, phys_addr_t *phy, size_t size, uint32 protection, + const char *name); +area_id map_mem(void **virt, phys_addr_t phy, size_t size, uint32 protection, + const char *name); status_t sg_memcpy(const physical_entry *sgTable, int sgCount, const void *data, size_t dataSize);