SIM_INTERFACE(i8051_interrupt) { int (*active_interrupt)(conf_object_t *NOTNULL obj); void (*reti)(conf_object_t *NOTNULL obj); bool (*suppress_irq)(conf_object_t *NOTNULL obj, uint32 addr); }; #define I8051_INTERRUPT_INTERFACE "i8051_interrupt"
The active_interrupt() function returns the interrupt vector address of the highest pending interrupt. This function should only be called when the processor should take an interrupt. This function may also set internal interrupt controller state, which can be cleared by the reti function call when returning from the interrupt.
The reti function is used to notify the interrupt controller that the currently active interrupt has completed.
The suppress_irq function is used to determine whether interrupt should be blocked after a writing access to a memory location.