The page fault handler works because I tested it by firing interrupt 14 (int $0x0E) and seeing a message printed on the screen; but, when I try to dereference an illegal address as follows:
Code: Select all
unsigned int *ptr = (unsigned int *)0xA000000;
unsigned int trigger_page_fault = *ptr; // dereference
The dereferenced value at that location is 0xFFFFFFFF (which is just garbage...) and interestingly enough, the page table entry, when 0xA0000000 is passed to my get_page() function, is 0x0 (meaning that the page is not even present), so why is the pointer being followed, and page fault not triggered?