another IDT problem <sigh>

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
stonedzealot

another IDT problem <sigh>

Post by stonedzealot »

At the risk of seeming like more of an idgit (idiot's idiot) :-[ I'd like to post this question. I know something similar was talked about in ahdeelmahmood's post on problems with Xsism's IDTKernel. I read through that post and found no answers, only that his GPF loops were generated by the timer having no isr.

I guess that post just went straight over my head. I set up the idtr with all 256 entries, all handled by a single function that gets the int number as a pushed parameter. It handles three events, keyboard interrupt, timer interrupt and GPF directly and has a general handler for the rest.

I get infinite amounts of General Protection Faults (interrupt 13) from the timer as discussed in the post previously mentioned. Upon masking irq0 to stop the timer interrupts, the loop stopped...but as soon as the keyboard interrupt is fired another infinite amount of GPFs occur.

I'm positive that all of the idtr entries are covered and they all point to a valid handler...

Anyway, I'll post up the code:
http://www.geocities.com/stonedzealot/interrupt.c <-- the main interrupt handler code
http://www.geocities.com/stonedzealot/kernelstart.asm<-- the kernel start code
any other units you need to see, I'll post them up too
distantvoices
Member
Member
Posts: 1600
Joined: Wed Oct 18, 2006 11:59 am
Location: Vienna/Austria
Contact:

Re:another IDT problem <sigh>

Post by distantvoices »

your isr expcts TWO values on the stack, not only the one you push onto it.

->masterinterupt(int xxx,int yyy) if i remember it right.

I recommend you push one value more to the stack. maybe it helps?
... the osdever formerly known as beyond infinity ...
BlueillusionOS iso image
stonedzealot

Re:another IDT problem <sigh>

Post by stonedzealot »

Yes, the masterinterrupt at the moment has error code capability and no it's not handled well but the only reason I'd hesitate to blame that would be because when I had 256 individual functions imported into the ASM code and subsequently hooked into the IDTR (and nothing was pushed to the stack by me) it still gave me the huge GPF thing in exactly the same manner...mainly because the program never actually exits the function (that would be my best guess).
Post Reply