Fixed MM_PageFault duplicating a page when it is only used once
[tpg/acess2.git] / Kernel / arch / x86 / mm_virt.c
index a022da2..b2520b5 100644 (file)
@@ -105,7 +105,7 @@ void MM_PageFault(Uint Addr, Uint ErrorCode, tRegs *Regs)
         && gaPageTable[Addr>>12] & PF_COW )
        {
                tPAddr  paddr;
-               if(MM_GetRefCount( gaPageTable[Addr>>12] & ~0xFFF ) == 0)
+               if(MM_GetRefCount( gaPageTable[Addr>>12] & ~0xFFF ) == 1)
                {
                        gaPageTable[Addr>>12] &= ~PF_COW;
                        gaPageTable[Addr>>12] |= PF_PRESENT|PF_WRITE;
@@ -381,7 +381,7 @@ Uint MM_ClearUser()
 Uint MM_Clone()
 {
        Uint    i, j;
-       Uint    kStackBase = gCurrentThread->KernelStack - KERNEL_STACK_SIZE;
+       Uint    kStackBase = Proc_GetCurThread()->KernelStack - KERNEL_STACK_SIZE;
        void    *tmp;
        
        //ENTER("");
@@ -621,7 +621,7 @@ Uint MM_MapTemp(tPAddr PAddr)
                        return TEMP_MAP_ADDR + (i << 12);
                }
                RELEASE( &gilTempMappings );
-               Proc_Yield();
+               Threads_Yield();
        }
 }
 

UCC git Repository :: git.ucc.asn.au