#include <archinit.h>
#include <pmemmap.h>
#include <mm_virt.h>
+#include <debug_hooks.h>
#define TRACE_REF 0
int i;
Uint64 base, size;
tVAddr vaddr;
- tPAddr paddr, firstFreePage;
+ tPAddr paddr;
ENTER("iNPMemRanges pPMemRanges",
NPMemRanges, PMemRanges);
if( i == NUM_STATIC_ALLOC )
{
// Map
- MM_Map(vaddr, paddr);
+ MM_Map((void*)vaddr, paddr);
todo --;
// Update virtual pointer
PMemMap_DumpBlocks(PMemRanges, NPMemRanges);
// Save the current value of paddr to simplify the allocation later
- firstFreePage = paddr;
+ giFirstFreePage = paddr;
LOG("Clearing multi bitmap");
// Fill the bitmaps (set most to "allocated")
void MM_DumpStatistics(void)
{
// TODO: Statistics for x86_64 PMM
+ Log_Warning("PMem", "TODO: Dump statistics");
}
/**
// TODO: Page out
// ATM. Just Warning
Warning(" MM_AllocPhysRange: Out of free pages");
- Log_Warning("Arch",
+ Log_Warning("PMem",
"Out of memory (unable to fulfil request for %i pages), zero remaining",
Pages
);
// TODO: Page out
// ATM. Just Warning
Warning(" MM_AllocPhysRange: Out of memory (unable to fulfil request for %i pages)", Pages);
- Log_Warning("Arch",
+ Log_Warning("PMem",
"Out of memory (unable to fulfil request for %i pages)",
Pages
);
const int pages_per_refpage = PAGE_SIZE/sizeof(gaiPageReferences[0]);
int i;
int page_base = page / pages_per_refpage * pages_per_refpage;
- if( !MM_Allocate( ref_base ) ) {
- Log_Error("Arch", "Out of memory when allocating reference count page");
+ if( !MM_Allocate( (void*)ref_base ) ) {
+ Log_Error("PMem", "Out of memory when allocating reference count page");
return ;
}
// Fill block
int MM_SetPageNode(tPAddr PAddr, void *Node)
{
tPAddr page = PAddr >> 12;
- tVAddr node_page = ((tVAddr)&gapPageNodes[page]) & ~(PAGE_SIZE-1);
+ void *node_page = (void*)( ((tVAddr)&gapPageNodes[page]) & ~(PAGE_SIZE-1) );
// if( !MM_GetRefCount(PAddr) ) return 1;
- if( !MM_GetPhysAddr((void*)node_page) ) {
+ if( !MM_GetPhysAddr(node_page) ) {
if( !MM_Allocate(node_page) )
return -1;
- memset( (void*)node_page, 0, PAGE_SIZE );
+ memset( node_page, 0, PAGE_SIZE );
}
gapPageNodes[page] = Node;