Why does terminating an interrupt for the main PIC cause a triple error (reboot)?

Well, at school we are developing an operating system. My project was to develop an ATA hard drive driver. I thought my interruption routine worked very well when my professor pointed out that I was only sending interruption commands to the subordinate PIC and not to the master.

My problem is that whenever I send an interrupt to the main PIC, it causes a triple error, which then causes my system to reboot. Now I have un / commented on a number of lines, and it seems that whenever the function of sending the end of the interrupt to the main PIC remains in the code, I get a triple error.

Now I am quite sure of the following:

  • interrupts are disabled when I enter my ISR
  • I send end bytes of interrupt correctly (checked by class)
  • I do not re-acknowledge the same interrupt

This caused massive disappointment, so I hope someone can give me some advice without having to see our code.

Thanks!

+4
source share
1 answer

I can only guess about it. Here are some things to check.

  • Is EOI out of your segment?
  • Is the EOI on the page read-only?
  • Is your interrupt handler at the right privilege level to access the EOI?
  • Are you using the correct segment register?

Any of these may cause an error. This, in turn, can lead to a double or triple failure if the descriptor tables are either corrupted or incorrectly configured to start.

0
source

All Articles