// === IMPORTS ===
extern Uint32 gaInitPageDir[1024];
extern Uint32 gaInitPageTable[1024];
+extern void Threads_SegFault(Uint Addr);
// === PROTOTYPES ===
void MM_PreinitVirtual();
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!");