summaryrefslogtreecommitdiff
path: root/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp')
-rw-r--r--src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp b/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp
index 51f1281d..1f1d24f5 100644
--- a/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp
+++ b/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp
@@ -1,10 +1,10 @@
-/* $Revision: 67140 $ */
+/* $Revision: 85891 $ */
/** @file
* VBoxGuestLibR0 - Physical memory heap.
*/
/*
- * Copyright (C) 2006-2007 Oracle Corporation
+ * Copyright (C) 2006-2010 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -100,7 +100,7 @@ struct _VBGLPHYSHEAPCHUNK
uint32_t cbSize;
/* Physical address of the chunk */
- RTCCPHYS physAddr;
+ uint32_t physAddr;
/* Number of allocated blocks in the chunk */
int32_t cAllocatedBlocks;
@@ -318,9 +318,11 @@ static VBGLPHYSHEAPBLOCK *vbglPhysHeapChunkAlloc (uint32_t cbSize)
return NULL;
}
+ AssertRelease(physAddr < _4G && physAddr + cbSize <= _4G);
+
pChunk->u32Signature = VBGL_PH_CHUNKSIGNATURE;
pChunk->cbSize = cbSize;
- pChunk->physAddr = physAddr;
+ pChunk->physAddr = (uint32_t)physAddr;
pChunk->cAllocatedBlocks = 0;
pChunk->pNext = g_vbgldata.pChunkHead;
pChunk->pPrev = NULL;
@@ -493,9 +495,9 @@ DECLVBGL(void *) VbglPhysHeapAlloc (uint32_t cbSize)
return vbglPhysHeapBlock2Data (pBlock);
}
-DECLVBGL(RTCCPHYS) VbglPhysHeapGetPhysAddr (void *p)
+DECLVBGL(uint32_t) VbglPhysHeapGetPhysAddr (void *p)
{
- RTCCPHYS physAddr = 0;
+ uint32_t physAddr = 0;
VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapData2Block (p);
if (pBlock)
@@ -504,7 +506,7 @@ DECLVBGL(RTCCPHYS) VbglPhysHeapGetPhysAddr (void *p)
("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags));
if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED)
- physAddr = pBlock->pChunk->physAddr + ((char *)p - (char *)pBlock->pChunk);
+ physAddr = pBlock->pChunk->physAddr + (uint32_t)((uintptr_t)p - (uintptr_t)pBlock->pChunk);
}
return physAddr;