hardware_exception

Methods for setting processor exception handlers. More...

Typedefs

typedef void(* exception_handler_t) (void)
 Exception handler function type. More...
 

Enumerations

enum  exception_number {
  NMI_EXCEPTION = -14, HARDFAULT_EXCEPTION = -13, SVCALL_EXCEPTION = -5, PENDSV_EXCEPTION = -2,
  SYSTICK_EXCEPTION = -1
}
 Exception number definitions. More...
 

Functions

exception_handler_t exception_set_exclusive_handler (enum exception_number num, exception_handler_t handler)
 Set the exception handler for an exception on the executing core. More...
 
void exception_restore_handler (enum exception_number num, exception_handler_t original_handler)
 Restore the original exception handler for an exception on this core. More...
 
exception_handler_t exception_get_vtable_handler (enum exception_number num)
 Get the current exception handler for the specified exception from the currently installed vector table of the execution core. More...
 

Detailed Description

Methods for setting processor exception handlers.

Exceptions are identified by a exception_number which is a number from -15 to -1; these are the numbers relative to the index of the first IRQ vector in the vector table. (i.e. vector table index is exception_num plus 16)

There is one set of exception handlers per core, so the exception handlers for each core as set by these methods are independent.

Note
That all exception APIs affect the executing core only (i.e. the core calling the function).

Typedef Documentation

◆ exception_handler_t

typedef void(* exception_handler_t) (void)

Exception handler function type.

All exception handlers should be of this type, and follow normal ARM EABI register saving conventions

Enumeration Type Documentation

◆ exception_number

Exception number definitions.

Note for consistency with irq numbers, these numbers are defined to be negative. The VTABLE index is the number here plus 16.

Name Value Exception
NMI_EXCEPTION -14 Non Maskable Interrupt
HARDFAULT_EXCEPTION -13 HardFault
SVCALL_EXCEPTION -5 SV Call
PENDSV_EXCEPTION -2 Pend SV
SYSTICK_EXCEPTION -1 System Tick

Function Documentation

◆ exception_get_vtable_handler()

exception_handler_t exception_get_vtable_handler ( enum exception_number  num)

Get the current exception handler for the specified exception from the currently installed vector table of the execution core.

Parameters
numException number
Returns
the address stored in the VTABLE for the given exception number

◆ exception_restore_handler()

void exception_restore_handler ( enum exception_number  num,
exception_handler_t  original_handler 
)

Restore the original exception handler for an exception on this core.

This method may be used to restore the exception handler for an exception on this core to the state prior to the call to exception_set_exclusive_handler(), so that exception_set_exclusive_handler() may be called again in the future.

Parameters
numException number exception_number
original_handlerThe original handler returned from exception_set_exclusive_handler
See also
exception_set_exclusive_handler()

◆ exception_set_exclusive_handler()

exception_handler_t exception_set_exclusive_handler ( enum exception_number  num,
exception_handler_t  handler 
)

Set the exception handler for an exception on the executing core.

This method will assert if an exception handler has been set for this exception number on this core via this method, without an intervening restore via exception_restore_handler.

Note
this method may not be used to override an exception handler that was specified at link time by providing a strong replacement for the weakly defined stub exception handlers. It will assert in this case too.
Parameters
numException number
handlerThe handler to set
See also
exception_number