summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/ppe
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures/ppe')
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S13
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h9
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
OpenPOWER on IntegriCloud