diff options
Diffstat (limited to 'src/import/chips/p9/procedures/ppe')
-rw-r--r-- | src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S | 13 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h | 9 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S b/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S index 5efb2073..ce463ebb 100644 --- a/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S +++ b/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S @@ -58,6 +58,8 @@ __vectors: ### will be forwarded to the program exception handler. __machine_check: + PPE_CAPTURE_INTERRUPT_FFDC + PPE42_MACHINE_CHECK_HANDLER ############################################################ @@ -89,6 +91,8 @@ __system_reset: .org __vectors + 0x0060 __data_storage: + PPE_CAPTURE_INTERRUPT_FFDC + PPE42_DATA_STORAGE_HANDLER ############################################################ @@ -98,6 +102,8 @@ __data_storage: .org __vectors + 0x0080 __instruction_storage: + PPE_CAPTURE_INTERRUPT_FFDC + PPE42_INSTRUCTION_STORAGE_HANDLER @@ -116,8 +122,9 @@ __external_interrupt_vector: .org __vectors + 0x00C0 __alignment_exception: - PPE42_ALIGNMENT_HANDLER + PPE_CAPTURE_INTERRUPT_FFDC + PPE42_ALIGNMENT_HANDLER ############################################################ # 0x00E0 : Program Interrupt @@ -126,8 +133,10 @@ __alignment_exception: .org __vectors + 0x00E0 __program_exception: - _pk_panic PPE42_ILLEGAL_INSTRUCTION + PPE_CAPTURE_INTERRUPT_FFDC + + _pk_panic PPE42_ILLEGAL_INSTRUCTION ############################################################ # 0x0100 : DEC Interrupts diff --git a/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h b/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h index ae899359..7bda9846 100644 --- a/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h +++ b/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h @@ -53,6 +53,15 @@ // bytes (8 instructions) to an unhandled exception, so any redefinition // would most likely be a branch to an application-defined handler. +// Empty PPE FFDC Handler plugged here, dependent platform needs to plug it in, +// if specific registers are required to be saved-off during the interupt +// execution +// by Default it will not generate any branch instruction in the pk interrupt +// vector table +#ifndef PPE_CAPTURE_INTERRUPT_FFDC + #define PPE_CAPTURE_INTERRUPT_FFDC +#endif + #ifndef PPE42_MACHINE_CHECK_HANDLER #define PPE42_MACHINE_CHECK_HANDLER PK_PANIC( PPE42_MACHINE_CHECK_PANIC) #endif |