I am having a stupid moment and should know the answer to this.
I am trying to sort out a weird triple faulting I am getting when I unmap the lower 4MB of memory ( I map it temporarily earlier to access grub structures and the like). Now I am getting triple faults but I have managed to track it down I think to my IDT which has been running swingingly all this time! (Oh, well)
So, the GDT48 structure, the memory pointer is a physical address (obviously), but what about the IDT48 is this physical too.
I looked in the Intel Manuals but just want to clarify this before I go on.
Cheers.
Actually, related to this, I am trying to eridicate a strange problem where my kernel triple faults if I unmap the lower 4MB of memory, but I have nothing pointing there. It happens before interrupts during a memory allocation. Seems very strange to me although I appreciate i doubt anybody will be able to think what it could be because there are so many possibilities.
GDT/IDT
Re:GDT/IDT
Yes, both IDT and GDT base are physical memory references.
Where are your IDT entries pointing? Could it be that when you remap you're altering the memory where the ISRs live?
Where are your IDT entries pointing? Could it be that when you remap you're altering the memory where the ISRs live?
Re:GDT/IDT
The ISR entries point to valid entries in the 0x80000000 kernel range.
The thing is with the low memory mapped everything runs perfectly, although I have a slight glitch with the scheduler its not related. But with the low 4MB unmapped totally including the page directory entry it just bombs out after a while, its not even as though it happens instantly and happens before interrupts occur.
All my pointers to page directory/page tables etc are in the 0x8- range.
Strange.
The thing is with the low memory mapped everything runs perfectly, although I have a slight glitch with the scheduler its not related. But with the low 4MB unmapped totally including the page directory entry it just bombs out after a while, its not even as though it happens instantly and happens before interrupts occur.
All my pointers to page directory/page tables etc are in the 0x8- range.
Strange.