extern char interrupt_wrapper[];
/** The interrupt vectors */
-static struct interrupt_vector intr_vec[ IRQ_MAX + 1 ];
+static struct interrupt_vector intr_vec[NUM_INT];
/** The interrupt descriptor table */
struct interrupt_descriptor idt[NUM_INT] __attribute__ (( aligned ( 16 ) ));
*/
void init_idt ( void ) {
struct interrupt_vector *vec;
- unsigned int irq;
unsigned int intr;
/* Initialise the interrupt descriptor table and interrupt vectors */
- for ( irq = 0 ; irq <= IRQ_MAX ; irq++ ) {
- intr = IRQ_INT ( irq );
- vec = &intr_vec[irq];
+ for ( intr = 0 ; intr < NUM_INT ; intr++ ) {
+ vec = &intr_vec[intr];
vec->pushal = PUSHAL_INSN;
vec->movb = MOVB_INSN;
vec->intr = intr;
( uint32_t ) vec->next );
set_interrupt_vector ( intr, vec );
}
+ DBGC ( &intr_vec[0], "INTn vector at %p+%xn (phys %#lx+%xn)\n",
+ intr_vec, sizeof ( intr_vec[0] ),
+ virt_to_phys ( intr_vec ), sizeof ( intr_vec[0] ) );
/* Initialise the interrupt descriptor table register */
idtr.base = virt_to_phys ( idt );