summaryrefslogtreecommitdiffstats
path: root/src/kernel/basesegment.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/basesegment.C')
-rw-r--r--src/kernel/basesegment.C11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/kernel/basesegment.C b/src/kernel/basesegment.C
index 72ace03c8..94aafec40 100644
--- a/src/kernel/basesegment.C
+++ b/src/kernel/basesegment.C
@@ -23,13 +23,13 @@
#include <limits.h>
#include <errno.h>
#include <util/singleton.H>
+#include <util/align.H>
#include <kernel/basesegment.H>
#include <kernel/segmentmgr.H>
#include <kernel/block.H>
#include <kernel/vmmmgr.H>
#include <kernel/cpuid.H>
-//#include <kernel/console.H>
#define SLBE_s 40
@@ -117,14 +117,13 @@ int BaseSegment::_mmAllocBlock(MessageQueue* i_mq,void* i_va,uint64_t i_size)
uint64_t l_blockSizeTotal = 0;
iv_block->totalBlocksAlloc(l_blockSizeTotal);
//Verify input address and size falls within this segment's address range
- if ((l_vaddr < this->getBaseAddress() ||
- l_vaddr >= (this->getBaseAddress() + (1ull << SLBE_s))) &&
- (l_blockSizeTotal+i_size <= (1ull << SLBE_s)))
+ if (l_vaddr < this->getBaseAddress() ||
+ l_vaddr >= (this->getBaseAddress() + (1ull << SLBE_s)) ||
+ (l_blockSizeTotal + ALIGN_PAGE(i_size)) >= (1ull << SLBE_s))
{
return -1;
}
- //TODO - Align i_size to page size
- Block* l_block = new Block(l_vaddr, i_size, i_mq);
+ Block* l_block = new Block(l_vaddr, ALIGN_PAGE(i_size), i_mq);
l_block->setParent(this);
iv_block->appendBlock(l_block);
return 0;
OpenPOWER on IntegriCloud