X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86_64%2Fmm_virt.c;h=90c3721dc6d65690c32ddba1fcd61c321836e138;hb=3764c294f21229bdf700f436fa4884f5e76e0d3a;hp=2605a86068bd7ee47ce344004faf9c236f6efdb7;hpb=7a51bb9345d19eb673ad8774f6af3eceffb1a838;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/mm_virt.c b/Kernel/arch/x86_64/mm_virt.c index 2605a860..90c3721d 100644 --- a/Kernel/arch/x86_64/mm_virt.c +++ b/Kernel/arch/x86_64/mm_virt.c @@ -38,10 +38,12 @@ // === PROTOTYPES === void MM_InitVirt(void); -void MM_FinishVirtualInit(void); +//void MM_FinishVirtualInit(void); void MM_PageFault(tVAddr Addr, Uint ErrorCode, tRegs *Regs); void MM_DumpTables(tVAddr Start, tVAddr End); - int MM_Map(tVAddr VAddr, tPAddr PAddr); +// int MM_Map(tVAddr VAddr, tPAddr PAddr); +void MM_Unmap(tVAddr VAddr); +void MM_ClearUser(void); int MM_GetPageEntry(tVAddr Addr, tPAddr *Phys, Uint *Flags); // === GLOBALS === @@ -656,7 +658,15 @@ tVAddr MM_NewKStack(void) //Log("MM_NewKStack: Found one at %p", base + KERNEL_STACK_SIZE); for( i = 0; i < KERNEL_STACK_SIZE; i += 0x1000) - MM_Allocate(base+i); + { + if( !MM_Allocate(base+i) ) + { + Log_Warning("MM", "MM_NewKStack - Allocation failed"); + for( i -= 0x1000; i; i -= 0x1000) + MM_Deallocate(base+i); + return 0; + } + } return base + KERNEL_STACK_SIZE; }