X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Farch%2Fx86_64%2Fmm_phys.c;h=81b69491039ddb9666871574fb2f85b659852216;hb=2b339e917d778c76b249457bcb66c4fb0007c495;hp=27c4946e9462fa6969cc498284a4152a872d0ae8;hpb=fb3abbad5dfd71ea2b190d0b33d9c57e879fb15a;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/x86_64/mm_phys.c b/KernelLand/Kernel/arch/x86_64/mm_phys.c index 27c4946e..81b69491 100644 --- a/KernelLand/Kernel/arch/x86_64/mm_phys.c +++ b/KernelLand/Kernel/arch/x86_64/mm_phys.c @@ -8,6 +8,7 @@ #include #include #include +#include #define TRACE_REF 0 @@ -71,7 +72,7 @@ void MM_InitPhys(int NPMemRanges, tPMemMapEnt *PMemRanges) int i; Uint64 base, size; tVAddr vaddr; - tPAddr paddr, firstFreePage; + tPAddr paddr; ENTER("iNPMemRanges pPMemRanges", NPMemRanges, PMemRanges); @@ -132,7 +133,7 @@ void MM_InitPhys(int NPMemRanges, tPMemMapEnt *PMemRanges) if( i == NUM_STATIC_ALLOC ) { // Map - MM_Map(vaddr, paddr); + MM_Map((void*)vaddr, paddr); todo --; // Update virtual pointer @@ -159,7 +160,7 @@ void MM_InitPhys(int NPMemRanges, tPMemMapEnt *PMemRanges) 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") @@ -258,6 +259,7 @@ void MM_InitPhys(int NPMemRanges, tPMemMapEnt *PMemRanges) void MM_DumpStatistics(void) { // TODO: Statistics for x86_64 PMM + Log_Warning("PMem", "TODO: Dump statistics"); } /** @@ -297,7 +299,7 @@ tPAddr MM_AllocPhysRange(int Pages, int MaxBits) // 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 ); @@ -365,7 +367,7 @@ tPAddr MM_AllocPhysRange(int Pages, int MaxBits) // 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 ); @@ -448,8 +450,8 @@ void MM_RefPhys(tPAddr PAddr) 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 @@ -555,14 +557,14 @@ int MM_int_GetRangeID( tPAddr Addr ) 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;