libdragon
Data Structures | Macros | Functions | Variables

Interrupt Controller. More...

Data Structures

struct  _callback_link
 Structure of an interrupt callback. More...
 

Macros

#define MI_INTR_SP   0x01
 SP interrupt bit.
 
#define MI_INTR_SI   0x02
 SI interrupt bit.
 
#define MI_INTR_AI   0x04
 AI interrupt bit.
 
#define MI_INTR_VI   0x08
 VI interrupt bit.
 
#define MI_INTR_PI   0x10
 PI interrupt bit.
 
#define MI_INTR_DP   0x20
 DP interrupt bit.
 
#define MI_MASK_SP   0x01
 SP mask bit.
 
#define MI_MASK_SI   0x02
 SI mask bit.
 
#define MI_MASK_AI   0x04
 AI mask bit.
 
#define MI_MASK_VI   0x08
 VI mask bit.
 
#define MI_MASK_PI   0x10
 PI mask bit.
 
#define MI_MASK_DP   0x20
 DP mask bit.
 
#define MI_MASK_CLR_SP   0x0001
 Clear SP mask.
 
#define MI_MASK_SET_SP   0x0002
 Set SP mask.
 
#define MI_MASK_CLR_SI   0x0004
 Clear SI mask.
 
#define MI_MASK_SET_SI   0x0008
 Set SI mask.
 
#define MI_MASK_CLR_AI   0x0010
 Clear AI mask.
 
#define MI_MASK_SET_AI   0x0020
 Set AI mask.
 
#define MI_MASK_CLR_VI   0x0040
 Clear VI mask.
 
#define MI_MASK_SET_VI   0x0080
 Set VI mask.
 
#define MI_MASK_CLR_PI   0x0100
 Clear PI mask.
 
#define MI_MASK_SET_PI   0x0200
 Set PI mask.
 
#define MI_MASK_CLR_DP   0x0400
 Clear DP mask.
 
#define MI_MASK_SET_DP   0x0800
 Set DP mask.
 
#define PI_CLEAR_INTERRUPT   0x02
 Bit to set to clear the PI interrupt.
 
#define SI_CLEAR_INTERRUPT   0
 Bit to set to clear the SI interrupt.
 
#define SP_CLEAR_INTERRUPT   0x08
 Bit to set to clear the SP interrupt.
 
#define DP_CLEAR_INTERRUPT   0x0800
 Bit to set to clear the DP interrupt.
 
#define AI_CLEAR_INTERRUPT   0
 Bit to set to clear the AI interrupt.
 
#define MAX_RESET_HANDLERS   4
 Maximum number of reset handlers that can be registered.
 

Functions

void __MI_handler (void)
 Handle an MI interrupt. More...
 
void __TI_handler (void)
 Handle a timer interrupt.
 
void __CART_handler (void)
 Handle a CART interrupt.
 
void __RESET_handler (void)
 Handle a RESET (pre-NMI) interrupt. More...
 
void register_AI_handler (void(*callback)())
 Register an AI callback. More...
 
void unregister_AI_handler (void(*callback)())
 Unregister an AI callback. More...
 
void register_VI_handler (void(*callback)())
 Register a VI callback. More...
 
void unregister_VI_handler (void(*callback)())
 Unregister a VI callback. More...
 
void register_PI_handler (void(*callback)())
 Register a PI callback. More...
 
void unregister_PI_handler (void(*callback)())
 Unegister a PI callback. More...
 
void register_DP_handler (void(*callback)())
 Register a DP callback. More...
 
void unregister_DP_handler (void(*callback)())
 Unregister a DP callback. More...
 
void register_SI_handler (void(*callback)())
 Register a SI callback. More...
 
void unregister_SI_handler (void(*callback)())
 Unegister a SI callback. More...
 
void register_SP_handler (void(*callback)())
 Register a SP callback. More...
 
void unregister_SP_handler (void(*callback)())
 Unegister a SP callback. More...
 
void register_TI_handler (void(*callback)())
 Register a timer callback. More...
 
void unregister_TI_handler (void(*callback)())
 Unregister a timer callback. More...
 
void register_CART_handler (void(*callback)())
 Register a CART interrupt callback. More...
 
void unregister_CART_handler (void(*callback)())
 Unregister a CART interrupt callback. More...
 
void register_RESET_handler (void(*callback)())
 Register a handler that will be called when the user presses the RESET button. More...
 
void unregister_RESET_handler (void(*callback)())
 Unregister a RESET interrupt callback. More...
 
void set_AI_interrupt (int active)
 Enable or disable the AI interrupt. More...
 
void set_VI_interrupt (int active, unsigned long line)
 Enable or disable the VI interrupt. More...
 
void set_PI_interrupt (int active)
 Enable or disable the PI interrupt. More...
 
void set_DP_interrupt (int active)
 Enable or disable the DP interrupt. More...
 
void set_SI_interrupt (int active)
 Enable or disable the SI interrupt. More...
 
void set_SP_interrupt (int active)
 Enable or disable the SP interrupt. More...
 
void set_TI_interrupt (int active)
 Enable or disable the timer interrupt. More...
 
void set_CART_interrupt (int active)
 Enable or disable the CART interrupt. More...
 
void set_RESET_interrupt (int active)
 Enable the RESET interrupt. More...
 
void __init_interrupts ()
 Initialize the interrupt controller.
 
void disable_interrupts ()
 Disable interrupts systemwide. More...
 
void enable_interrupts ()
 Enable interrupts systemwide. More...
 
interrupt_state_t get_interrupts_state ()
 Return the current state of interrupts. More...
 
uint32_t exception_reset_time (void)
 Check whether the RESET button was pressed and how long we are into the reset process. More...
 

Variables

uint32_t interrupt_disabled_tick = 0
 tick at which interrupts were disabled. More...
 
struct callback_link * AI_callback = 0
 Linked list of AI callbacks.
 
struct callback_link * VI_callback = 0
 Linked list of VI callbacks.
 
struct callback_link * PI_callback = 0
 Linked list of PI callbacks.
 
struct callback_link * DP_callback = 0
 Linked list of DP callbacks.
 
struct callback_link * SI_callback = 0
 Linked list of SI callbacks.
 
struct callback_link * SP_callback = 0
 Linked list of SP callbacks.
 
struct callback_link * TI_callback = 0
 Linked list of TI callbacks.
 
struct callback_link * CART_callback = 0
 Linked list of CART callbacks.
 

Detailed Description

Interrupt Controller.