diff --git a/src/sys/mm/memory.c b/src/sys/mm/memory.c index c06b708..31d5c42 100644 --- a/src/sys/mm/memory.c +++ b/src/sys/mm/memory.c @@ -8,7 +8,7 @@ #include int numPages = 0; -mMap *mmUsedPages; +mMap *mmUsedPages = 0xFD000000; uInt32 freePages = 0, usedPages = 0; uInt32 z = 0, memStart = 0; @@ -69,45 +69,30 @@ { mMap *tmp, *tmpMap; freePages--; - kprintf("Z = %d + sizeof %d = %d", z, sizeof(mMap), z + sizeof(mMap)); + kprintf("Z = %d + sizeof %d + 1 = %d\n", z, sizeof(mMap), z + (sizeof(mMap)+1)); if(mmFreePages == NULL) { - kprintf("1\n"); - mmFreePages = (z + sizeof(mMap)); - mmFreePages->First = mmFreePages; - mmFreePages->Last = mmFreePages; - mmFreePages->Next = NULL; - mmFreePages->Previous = NULL; - mmFreePages->pageAddr = z * 4096; - mmFreePages->physicalAddr = z * 4096; - kprintf("something goes wrong here"); - - + kprintf("I'm null!\n"); + mmUsedPages = (z + sizeof(mMap)); + mmUsedPages->First = NULL; + mmUsedPages->Last = NULL; + z+=(sizeof(mMap)+1); } - else - { - kprintf("2\n"); - tmpMap = (z + sizeof(mMap)); - tmp = mmFreePages->Last; - tmp->Next = tmpMap; - tmpMap->Previous = mmFreePages->Last; - mmFreePages->Last = tmpMap; - tmpMap->pageAddr = z * 4096; - tmpMap->physicalAddr = z * 4096; - kprintf("something goes wrong here"); - } - z+=sizeof(mMap)+1; - // remove the first page from the list and return it // - tmp = mmFreePages->First; - kprintf("3\n"); - mmFreePages->First = mmFreePages->First->Next; - mmFreePages->First->Previous = NULL; + tmpMap = z; + tmpMap->pageAddr = 10; + tmpMap->physicalAddr = 10; + tmpMap->Next = NULL; + tmpMap->Previous = mmUsedPages->Last; + mmUsedPages->Last = tmpMap; + if(mmUsedPages->First == NULL) + mmUsedPages->First = tmpMap; + z+=(sizeof(mMap)+1); - kprintf("%d:%d - [0x%X] - [0x%X]\n", z, numPages, tmpMap->pageAddr, tmp); + kprintf("z = %d numPages = %d pageAddr = [%d] tmpAddr = [%d]\n", z, numPages, tmpMap->pageAddr, tmpMap); - return tmp; + return tmpMap; } int @@ -127,7 +112,7 @@ //kprintf("Initializing memory memStart = [%x]\n", memStart); /* initialize used pages (kernel space) */ - z = 0xFFFF0000; + z = 30000; /* Print Out Memory Information */ kprintf("Total Memory: %iMB\n", ((numPages * 4096) / 1024) / 1024 ); //kprintf("Available Memory: %iMB\n", ((freePages * 4096) / 1024) / 1024 );