I Can't Get Interrupts Working: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content deleted Content added
Gijswl (talk | contribs)
m Added keyboard IRQ case to 'I can only receive one IRQ'
Line 5: Line 5:
== ISR problems ==
== ISR problems ==


=== My handler doesn't get called!? (ASM) ===
=== My handler doesn't get called?! (Assembly) ===


For this test, you need to call the interrupt yourself, by software. Don't try to get [[IRQ]] handled right from the start before you're sure your IDT setup is correct. You need to have:
For this test, you need to call the interrupt yourself, by software. Don't try to get [[IRQ]] handled right from the start before you're sure your IDT setup is correct. You need to have:


* your IDT loaded and filled properly.
* your IDT loaded and filled properly.
* your IDT's ''linear'' address loaded in a structure together with the table's size (in bytes, iirc). Be especially cautious if you have a [[Higher Half Kernel]] design or did not set up [[Identity Paging|identity paging]].
* your IDT's ''linear'' address loaded in a structure together with the table's size (in bytes, IIRC). Be especially cautious if you have a [[Higher Half Kernel]] design or did not set up [[Identity Paging|identity paging]].
* a valid Code selector and offset in the [[Descriptors|descriptor]], proper type, etc.
* a valid Code selector and offset in the [[Descriptors|descriptor]], proper type, etc.
* a handling code at the defined offset.
* a handling code at the defined offset.