Immense cleanup of libc, implemening login program. Slight changes to ACL handling...
[tpg/acess2.git] / Kernel / arch / x86 / mm_virt.c
index 7db7ced..3d3fee1 100644 (file)
@@ -40,6 +40,7 @@
 // === IMPORTS ===
 extern Uint32  gaInitPageDir[1024];
 extern Uint32  gaInitPageTable[1024];
+extern void    Threads_SegFault(Uint Addr);
 
 // === PROTOTYPES ===
 void   MM_PreinitVirtual();
@@ -118,12 +119,18 @@ void MM_PageFault(Uint Addr, Uint ErrorCode, tRegs *Regs)
                        gaPageTable[Addr>>12] &= PF_USER;
                        gaPageTable[Addr>>12] |= paddr|PF_PRESENT|PF_WRITE;
                }
-               //LOG("Duplicated page at %p to 0x%x", Addr&~0xFFF, gaPageTable[Addr>>12]);
+               
                INVLPG( Addr & ~0xFFF );
                //LEAVE('-')
                return;
        }
        
+       // If it was a user, tell the thread handler
+       if(ErrorCode & 4) {
+               Threads_SegFault(Addr);
+               return ;
+       }
+       
        // -- Check Error Code --
        if(ErrorCode & 8)
                Warning("Reserved Bits Trashed!");

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