summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaja Das <rajadas2@in.ibm.com>2018-01-07 20:59:32 -0600
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2018-02-01 17:15:30 -0600
commitc91fbdc36d394d9b97231e70504796cbc7584433 (patch)
tree5feb889b6e05771e7ba51d49e2fbe59b58a8bfe2
parent630537bdf633052e6c3a3fcb0d83c0225a355f21 (diff)
downloadtalos-hcode-c91fbdc36d394d9b97231e70504796cbc7584433.tar.gz
talos-hcode-c91fbdc36d394d9b97231e70504796cbc7584433.zip
Register FFDC call is handled within machine_check_handler
Within the PK interrupt vector, if you have a function call from one function to another, it needs branch link instruction, but since the BL is already being used to jump from software context to the PK Vectored Interrupt context, the function call from within will corrupt the Link register. For interrupts like data_storage, instruction_storage, alignment_exception and program_exception, the save-off will capture the LR registers to indicate which interrupt was getting executed when halt happened. For Machine check handler, LR won't be valid. Change-Id: Iee17b37acd438c7bee2c956cac2de3ce64d04441 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/51587 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Soma Bhanutej <soma.bhanu@in.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
-rw-r--r--import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S7
1 files changed, 4 insertions, 3 deletions
diff --git a/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S
index dd4ddd89..2c773397 100644
--- a/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S
+++ b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_exceptions.S
@@ -58,8 +58,10 @@ __vectors:
### will be forwarded to the program exception handler.
__machine_check:
- PPE_CAPTURE_INTERRUPT_FFDC
-
+ ### PPE_CAPTURE_INTERRUPT_FFDC is called within machine_check_handler
+ ### There is a branch issue if the PPE_CAPTURE_INTERRUPT_FFDC is called
+ ### from outside, so an work around, FFDC is captured within machine
+ ### check handler.
PPE42_MACHINE_CHECK_HANDLER
############################################################
@@ -106,7 +108,6 @@ __instruction_storage:
PPE42_INSTRUCTION_STORAGE_HANDLER
-
############################################################
# 0x00A0 : External Interrupt
############################################################
OpenPOWER on IntegriCloud