RTEMS
5.1
|
PowerPC Exceptions API. More...
Go to the source code of this file.
Macros | |
#define | ASM_RESET_VECTOR 0x01 |
#define | ASM_MACH_VECTOR 0x02 |
#define | ASM_PROT_VECTOR 0x03 |
#define | ASM_ISI_VECTOR 0x04 |
#define | ASM_EXT_VECTOR 0x05 |
#define | ASM_ALIGN_VECTOR 0x06 |
#define | ASM_PROG_VECTOR 0x07 |
#define | ASM_FLOAT_VECTOR 0x08 |
#define | ASM_DEC_VECTOR 0x09 |
#define | ASM_SYS_VECTOR 0x0C |
#define | ASM_TRACE_VECTOR 0x0D |
#define | ASM_PPC405_APU_UNAVAIL_VECTOR ASM_60X_VEC_ASSIST_VECTOR |
#define | ASM_8XX_FLOATASSIST_VECTOR 0x0E |
#define | ASM_8XX_SOFTEMUL_VECTOR 0x10 |
#define | ASM_8XX_ITLBMISS_VECTOR 0x11 |
#define | ASM_8XX_DTLBMISS_VECTOR 0x12 |
#define | ASM_8XX_ITLBERROR_VECTOR 0x13 |
#define | ASM_8XX_DTLBERROR_VECTOR 0x14 |
#define | ASM_8XX_DBREAK_VECTOR 0x1C |
#define | ASM_8XX_IBREAK_VECTOR 0x1D |
#define | ASM_8XX_PERIFBREAK_VECTOR 0x1E |
#define | ASM_8XX_DEVPORT_VECTOR 0x1F |
#define | ASM_5XX_FLOATASSIST_VECTOR 0x0E |
#define | ASM_5XX_SOFTEMUL_VECTOR 0x10 |
#define | ASM_5XX_IPROT_VECTOR 0x13 |
#define | ASM_5XX_DPROT_VECTOR 0x14 |
#define | ASM_5XX_DBREAK_VECTOR 0x1C |
#define | ASM_5XX_IBREAK_VECTOR 0x1D |
#define | ASM_5XX_MEBREAK_VECTOR 0x1E |
#define | ASM_5XX_NMEBREAK_VECTOR 0x1F |
#define | ASM_60X_VEC_VECTOR 0x0A |
#define | ASM_60X_PERFMON_VECTOR 0x0F |
#define | ASM_60X_IMISS_VECTOR 0x10 |
#define | ASM_60X_DLMISS_VECTOR 0x11 |
#define | ASM_60X_DSMISS_VECTOR 0x12 |
#define | ASM_60X_ADDR_VECTOR 0x13 |
#define | ASM_60X_SYSMGMT_VECTOR 0x14 |
#define | ASM_60X_VEC_ASSIST_VECTOR 0x16 |
#define | ASM_60X_ITM_VECTOR 0x17 |
#define | ASM_BOOKE_CRIT_VECTOR 0x01 |
#define | ASM_BOOKE_DEC_VECTOR 0x10 |
#define | ASM_BOOKE_ITLBMISS_VECTOR 0x11 |
#define | ASM_BOOKE_DTLBMISS_VECTOR 0x12 |
#define | ASM_BOOKE_FIT_VECTOR 0x13 |
#define | ASM_BOOKE_WDOG_VECTOR 0x14 |
#define | ASM_BOOKE_APU_VECTOR 0x18 |
#define | ASM_BOOKE_DEBUG_VECTOR ASM_TRACE_VECTOR |
#define | ASM_E500_SPE_UNAVAILABLE_VECTOR ASM_60X_VEC_VECTOR |
#define | ASM_E500_EMB_FP_DATA_VECTOR 0x19 |
#define | ASM_E500_EMB_FP_ROUND_VECTOR 0x1A |
#define | ASM_E500_PERFMON_VECTOR ASM_60X_PERFMON_VECTOR |
#define | ASM_E300_CRIT_VECTOR 0x0A |
#define | ASM_E300_PERFMON_VECTOR ASM_60X_PERFMON_VECTOR |
#define | ASM_E300_IMISS_VECTOR ASM_60X_IMISS_VECTOR /* Special case: Shadowed GPRs */ |
#define | ASM_E300_DLMISS_VECTOR ASM_60X_DLMISS_VECTOR /* Special case: Shadowed GPRs */ |
#define | ASM_E300_DSMISS_VECTOR ASM_60X_DSMISS_VECTOR /* Special case: Shadowed GPRs */ |
#define | ASM_E300_ADDR_VECTOR ASM_60X_ADDR_VECTOR |
#define | ASM_E300_SYSMGMT_VECTOR ASM_60X_SYSMGMT_VECTOR |
#define | LAST_VALID_EXC 0x1F |
#define | ASM_60X_VEC_VECTOR_OFFSET 0xf20 |
#define | ASM_PPC405_FIT_VECTOR_OFFSET 0x1010 |
#define | ASM_PPC405_WDOG_VECTOR_OFFSET 0x1020 |
#define | ASM_PPC405_TRACE_VECTOR_OFFSET 0x2000 |
#define | LINK_REGISTER_CALLEE_UPDATE_ROOM 4 |
#define | EXC_GENERIC_SIZE (PPC_EXC_FRAME_SIZE + PPC_STACK_RED_ZONE_SIZE) |
#define | PPC_EXC_INTERRUPT_FRAME_SIZE CPU_INTERRUPT_FRAME_SIZE |
#define | EXC_VEC_SIZE (0) |
#define | EXCEPTION_FRAME_END (EXC_GENERIC_SIZE + EXC_VEC_SIZE) |
Typedefs | |
typedef CPU_Exception_frame | BSP_Exception_frame |
typedef void(* | exception_handler_t) (BSP_Exception_frame *) |
Global exception handler type. | |
typedef uint8_t | ppc_exc_categories[LAST_VALID_EXC+1] |
Categorie set type. | |
typedef int(* | ppc_exc_handler_t) (BSP_Exception_frame *f, unsigned vector) |
High-level exception handler type. More... | |
typedef exception_handler_t | cpuExcHandlerType |
Enumerations | |
enum | ppc_exc_category { PPC_EXC_INVALID = 0, PPC_EXC_ASYNC = 1, PPC_EXC_CLASSIC = 2, PPC_EXC_CLASSIC_ASYNC = PPC_EXC_CLASSIC | PPC_EXC_ASYNC, PPC_EXC_405_CRITICAL = 4, PPC_EXC_405_CRITICAL_ASYNC = PPC_EXC_405_CRITICAL | PPC_EXC_ASYNC, PPC_EXC_BOOKE_CRITICAL = 6, PPC_EXC_BOOKE_CRITICAL_ASYNC = PPC_EXC_BOOKE_CRITICAL | PPC_EXC_ASYNC, PPC_EXC_E500_MACHCHK = 8, PPC_EXC_E500_MACHCHK_ASYNC = PPC_EXC_E500_MACHCHK | PPC_EXC_ASYNC, PPC_EXC_NAKED = 10 } |
Exception categories. More... | |
Functions | |
void | C_exception_handler (BSP_Exception_frame *excPtr) |
Default global exception handler. | |
void | BSP_printStackTrace (const BSP_Exception_frame *excPtr) |
void * | ppc_exc_vector_address (unsigned vector, void *vector_base) |
Returns the entry address of the vector. More... | |
const ppc_exc_categories * | ppc_exc_categories_for_cpu (ppc_cpu_id_t cpu) |
Returns the category set for a CPU of type cpu, or NULL if there is no category set available for this CPU. | |
ppc_exc_category | ppc_exc_category_for_vector (const ppc_exc_categories *categories, unsigned vector) |
Returns the category for the vector vector using the category set categories. | |
rtems_status_code | ppc_exc_make_prologue (unsigned vector, void *vector_base, ppc_exc_category category, uint32_t *prologue, size_t *prologue_size) |
Makes a minimal prologue for the vector vector with the category category. More... | |
void | ppc_exc_initialize_with_vector_base (uintptr_t interrupt_stack_begin, void *vector_base) |
Initializes the exception handling. More... | |
int | ppc_exc_handler_default (BSP_Exception_frame *f, unsigned int vector) |
Default high-level exception handler. More... | |
rtems_status_code | ppc_exc_set_handler (unsigned vector, ppc_exc_handler_t hdl) |
Set high-level exception handler. More... | |
ppc_exc_handler_t | ppc_exc_get_handler (unsigned vector) |
Returns the currently active high-level exception handler. | |
void | ppc_exc_wrapup (BSP_Exception_frame *f) |
int | ppc_exc_alignment_handler (BSP_Exception_frame *frame, unsigned excNum) |
Standard aligment handler. More... | |
Variables | |
uint32_t | ppc_exc_msr_bits |
Bits for MSR update. More... | |
uint32_t | ppc_exc_cache_wb_check |
Cache write back check flag. More... | |
ppc_exc_handler_t | ppc_exc_handler_table [LAST_VALID_EXC+1] |
High-level exception handler table. | |
exception_handler_t | globalExceptHdl |
Global exception handler. | |
uint32_t(* | ppc_exc_get_DAR )(void) |
Function for DAR access. More... | |
PowerPC Exceptions API.