summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/contrib/ncsw/user/env/xx.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/contrib/ncsw/user/env/xx.c b/sys/contrib/ncsw/user/env/xx.c
index 515e5f115ff8..2a3c90ebf072 100644
--- a/sys/contrib/ncsw/user/env/xx.c
+++ b/sys/contrib/ncsw/user/env/xx.c
@@ -701,7 +701,12 @@ XX_VirtToPhys(void *addr)
return (XX_PInfo.portal_ci_pa[QM_PORTAL][cpu] +
(vm_offset_t)addr - XX_PInfo.portal_ci_va[QM_PORTAL]);
- paddr = pmap_kextract((vm_offset_t)addr);
+ if (PMAP_HAS_DMAP && (vm_offset_t)addr >= DMAP_BASE_ADDRESS &&
+ (vm_offset_t)addr <= DMAP_MAX_ADDRESS)
+ return (DMAP_TO_PHYS((vm_offset_t)addr));
+ else
+ paddr = pmap_kextract((vm_offset_t)addr);
+
if (paddr == 0)
printf("NetCommSW: "
"Unable to translate virtual address %p!\n", addr);
@@ -757,6 +762,9 @@ XX_PhysToVirt(physAddress_t addr)
if (pv != NULL)
return ((void *)(pv->pv_va + ((vm_offset_t)addr & PAGE_MASK)));
+ if (PMAP_HAS_DMAP)
+ return ((void *)PHYS_TO_DMAP(addr));
+
printf("NetCommSW: "
"Unable to translate physical address 0x%09jx!\n", (uintmax_t)addr);