This file contains the API prototypes for configuring interrupt support for the ARM Cortex-R5 and VIM.
The following is the recommended calling sequence for this API:
When an interrupt occurs, control goes to the ISR given as a parameter in the Intc_IntRegister() call for that specific interrupt. The pending interrupt is automatically cleared and acknowledged in the VIM.
Other calls available: o Call Intc_IntUnregister() to unregister a previously registered interrupt o Call Intc_IntDisable() to disable a previously enabled interrupt o Call Intc_SystemDisable() to disable the R5 IRQ and FIQ interrupts
Go to the source code of this file.
Data Structures | |
struct | SDL_R5ExptnHandlers |
Structure containing the Exception Handlers. If application does not want register an exception handler then below handlers can be assigned to 'NULL' value. In such case, default handler will be used which have the infinite loop. More... | |
Macros | |
#define | EXCEPTION_R5_RESET (0U) |
List of Exceptions in R5. These exceptions are interrupts from 0 to 6 in Vector table. More... | |
#define | EXCEPTION_R5_UNDEF_INSTR (1U) |
Exception for Undefined Instruction. More... | |
#define | EXCEPTION_R5_SW_INTR (2U) |
Exception for Software interrupt. More... | |
#define | EXCEPTION_R5_ABORT_PREFETCH (3U) |
Exception for Abort (prefetch) More... | |
#define | EXCEPTION_R5_ABORT_DATA (4U) |
Exception for Abort (data) More... | |
#define | EXCEPTION_R5_IRQ (5U) |
Exception for IRQ. More... | |
#define | EXCEPTION_R5_FIQ (6U) |
Exception for FIQ. More... | |
Typedefs | |
typedef void(* | IntrFuncPtr) (void *ptr) |
typedef void(* | exptnHandlerPtr) (void *ptr) |
Functions | |
__attribute__ ((interrupt("UNDEF"), section(".text.hwi"), aligned(32))) void undefInstructionExptnHandler(void) | |
__attribute__ ((interrupt("SWI"), section(".text.hwi"), aligned(32))) void swIntrExptnHandler(void) | |
__attribute__ ((interrupt("ABORT"), section(".text.hwi"), aligned(32))) void prefetchAbortExptnHandler(void) | |
__attribute__ ((interrupt("IRQ"), section(".text.hwi"), aligned(32))) void irqExptnHandler(void) | |
__attribute__ ((interrupt("FIQ"), section(".text.hwi"), aligned(32))) void fiqExptnHandler(void) | |
void | Intc_SystemEnable (void) |
This function enables the Cortex-R5's IRQ and FIQ interrupts. More... | |
uintptr_t | Intc_SystemDisable (void) |
This function disables the Cortex-R5's IRQ and FIQ interrupts. More... | |
void | Intc_SystemRestore (uintptr_t cookie) |
This function enables the Cortex-R5's IRQ and FIQ interrupts This can be called after Intc_SystemDisable() to restore system IRQ/FIQ. More... | |
void | Intc_InitExptnHandlers (SDL_R5ExptnHandlers *handlers) |
This function initializes exception handlers for various exceptions. More... | |
void | Intc_RegisterExptnHandlers (const SDL_R5ExptnHandlers *handlers) |
This function registers handlers for various exceptions. More... | |
#define EXCEPTION_R5_RESET (0U) |
List of Exceptions in R5. These exceptions are interrupts from 0 to 6 in Vector table.
Exception for RESET
#define EXCEPTION_R5_UNDEF_INSTR (1U) |
Exception for Undefined Instruction.
#define EXCEPTION_R5_SW_INTR (2U) |
Exception for Software interrupt.
#define EXCEPTION_R5_ABORT_PREFETCH (3U) |
Exception for Abort (prefetch)
#define EXCEPTION_R5_ABORT_DATA (4U) |
Exception for Abort (data)
#define EXCEPTION_R5_IRQ (5U) |
Exception for IRQ.
#define EXCEPTION_R5_FIQ (6U) |
Exception for FIQ.
typedef void(* IntrFuncPtr) (void *ptr) |
typedef void(* exptnHandlerPtr) (void *ptr) |
__attribute__ | ( | (interrupt("UNDEF"), section(".text.hwi"), aligned(32)) | ) |
__attribute__ | ( | (interrupt("SWI"), section(".text.hwi"), aligned(32)) | ) |
__attribute__ | ( | (interrupt("ABORT"), section(".text.hwi"), aligned(32)) | ) |
__attribute__ | ( | (interrupt("IRQ"), section(".text.hwi"), aligned(32)) | ) |
__attribute__ | ( | (interrupt("FIQ"), section(".text.hwi"), aligned(32)) | ) |
void Intc_SystemEnable | ( | void | ) |
This function enables the Cortex-R5's IRQ and FIQ interrupts.
uintptr_t Intc_SystemDisable | ( | void | ) |
This function disables the Cortex-R5's IRQ and FIQ interrupts.
void Intc_SystemRestore | ( | uintptr_t | cookie | ) |
This function enables the Cortex-R5's IRQ and FIQ interrupts This can be called after Intc_SystemDisable() to restore system IRQ/FIQ.
cookie | Mask to enable IRQ and FIQ |
void Intc_InitExptnHandlers | ( | SDL_R5ExptnHandlers * | handlers | ) |
This function initializes exception handlers for various exceptions.
handlers | Reference Exception handlers list. Refer struct SDL_R5ExptnHandlers |
void Intc_RegisterExptnHandlers | ( | const SDL_R5ExptnHandlers * | handlers | ) |
This function registers handlers for various exceptions.
handlers | Exception handlers list. Refer struct SDL_R5ExptnHandlers |