// === CONSTANTS ===
#define MAX_CALLBACKS_PER_IRQ 4
+#define TRACE_IRQS 0
// === TYPES ===
typedef void (*tIRQ_Callback)(int);
+// === PROTOTYPES ===
+void IRQ_Handler(tRegs *Regs);
+
// === GLOBALS ===
tIRQ_Callback gIRQ_Handlers[16][MAX_CALLBACKS_PER_IRQ];
for( i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ )
{
- //Log(" IRQ_Handler: Call %p", gIRQ_Handlers[Regs->int_num][i]);
- if( gIRQ_Handlers[Regs->int_num][i] )
+ if( gIRQ_Handlers[Regs->int_num][i] ) {
gIRQ_Handlers[Regs->int_num][i](Regs->int_num);
+ #if TRACE_IRQS
+ if( Regs->int_num != 8 )
+ Log("IRQ %i: Call %p", Regs->int_num, gIRQ_Handlers[Regs->int_num][i]);
+ #endif
+ }
}
//Log(" IRQ_Handler: Resetting");
for( i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ )
{
if( gIRQ_Handlers[Num][i] == NULL ) {
- Log("IRQ_AddHandler: Added IRQ%i Cb#%i %p", Num, i, Callback);
+ Log_Log("IRQ", "Added IRQ%i Cb#%i %p", Num, i, Callback);
gIRQ_Handlers[Num][i] = Callback;
return 1;
}
}
- Warning("IRQ_AddHandler - No free callbacks on IRQ%i", Num);
+ Log_Warning("IRQ", "No free callbacks on IRQ%i", Num);
return 0;
}