[haiku-commits] r37219 - haiku/trunk/src/add-ons/kernel/busses/scsi/ahci

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 22 Jun 2010 01:22:20 +0200 (CEST)

Author: bonefish
Date: 2010-06-22 01:22:19 +0200 (Tue, 22 Jun 2010)
New Revision: 37219
Changeset: http://dev.haiku-os.org/changeset/37219/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp
   haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
   haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.cpp
   haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.h
Log:
Use the correct type for physical addresses.


Modified: haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp 
2010-06-21 23:21:07 UTC (rev 37218)
+++ haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp 
2010-06-21 23:22:19 UTC (rev 37219)
@@ -105,11 +105,12 @@
                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;
        }

Modified: haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp       
2010-06-21 23:21:07 UTC (rev 37218)
+++ haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp       
2010-06-21 23:22:19 UTC (rev 37219)
@@ -75,9 +75,9 @@
                + 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);

Modified: haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.cpp    2010-06-21 
23:21:07 UTC (rev 37218)
+++ haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.cpp    2010-06-21 
23:22:19 UTC (rev 37219)
@@ -22,10 +22,9 @@
 
 
 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 @@
        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 @@
 
 
 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 @@
 
        *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;
 }

Modified: haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.h
===================================================================
--- haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.h      2010-06-21 
23:21:07 UTC (rev 37218)
+++ haiku/trunk/src/add-ons/kernel/busses/scsi/ahci/util.h      2010-06-21 
23:22:19 UTC (rev 37219)
@@ -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);
 


Other related posts:

  • » [haiku-commits] r37219 - haiku/trunk/src/add-ons/kernel/busses/scsi/ahci - ingo_weinhold