summaryrefslogtreecommitdiffstats
path: root/src/kernel/start.S
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2015-10-15 13:59:58 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-03-30 16:24:17 -0400
commit6b5097872a33a20d4c03f995ca8f1585b9e43e53 (patch)
treeb97d48402b8e54b14d1ce554191bbeb78890d09c /src/kernel/start.S
parent550f30129f455317e65610cd90e9d06b2018e4c1 (diff)
downloadtalos-hostboot-6b5097872a33a20d4c03f995ca8f1585b9e43e53.tar.gz
talos-hostboot-6b5097872a33a20d4c03f995ca8f1585b9e43e53.zip
P9 PSIHB Base Interrupt Support
This change includes the following: - Kernel Updates to handle hypervisor interrupt vector - Interrupt Resource Provider changes to setup and handle LSI Based interrupts - Kernel updates to handle modified interrupt flow for LSI Based interrupts - Attribute updates for Scom BAR Registers Change-Id: If63f246a0090ab8c81c3fa8ac3ab6871a0af2e31 RTC:137561 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/20692 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/kernel/start.S')
-rw-r--r--src/kernel/start.S15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/kernel/start.S b/src/kernel/start.S
index 86c2d1c18..740f961e8 100644
--- a/src/kernel/start.S
+++ b/src/kernel/start.S
@@ -208,6 +208,7 @@ UNIMPL_INTERRUPT_STUB(hype_data_storage, 0xE00)
UNIMPL_INTERRUPT_STUB(hype_inst_storage, 0xE20)
STD_INTERRUPT_STUB(hype_emu_assist, 0xE40)
UNIMPL_INTERRUPT_STUB(hype_maint, 0xE60)
+STD_INTERRUPT_STUB(hypervisor_external, 0xEA0)
UNIMPL_INTERRUPT_STUB(perf_monitor, 0xF00)
UNIMPL_INTERRUPT_STUB(vector_unavail, 0xF20)
UNIMPL_INTERRUPT_STUB(vsx_unavail, 0xF40)
@@ -698,6 +699,20 @@ intvect_system_reset_external:
b intvect_external
+ ;// @fn intvect_hypervisor_external
+ ;// Handle hypervisor external interrupt
+ ;// This function moves the hypervisor external interrupt regs
+ ;// into the external interrupt regs and then branches to the
+ ;// external interrupt handler
+intvect_hypervisor_external:
+ mtsprg1 r1 ;// Save off R1 temporarily.
+ mfspr r1, HSRR0 ;// Move HSRR0 -> SRR0.
+ mtsrr0 r1
+ mfspr r1, HSRR1 ;// Move HSRR1 -> SRR1.
+ mtsrr1 r1
+ mfsprg1 r1 ;// Restore R1 and use external interrupt handler
+ b intvect_external
+
;// @fn system_call_fast_path
;// Handle fast path system calls.
;// 0x800 = HMER read (HMER -> r3).
OpenPOWER on IntegriCloud