GDT/IDT

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
DarylD

GDT/IDT

Post by DarylD »

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.
Curufir

Re:GDT/IDT

Post by Curufir »

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?
DarylD

Re:GDT/IDT

Post by DarylD »

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.
Post Reply