|
@@ -308,6 +308,7 @@ interrupt_base_book3e: /* fake trap */
|
|
|
EXCEPTION_STUB(0x2e0, guest_doorbell_crit)
|
|
|
EXCEPTION_STUB(0x300, hypercall)
|
|
|
EXCEPTION_STUB(0x320, ehpriv)
|
|
|
+ EXCEPTION_STUB(0x340, lrat_error)
|
|
|
|
|
|
.globl interrupt_end_book3e
|
|
|
interrupt_end_book3e:
|
|
@@ -677,6 +678,17 @@ kernel_dbg_exc:
|
|
|
bl .unknown_exception
|
|
|
b .ret_from_except
|
|
|
|
|
|
+/* LRAT Error interrupt */
|
|
|
+ START_EXCEPTION(lrat_error);
|
|
|
+ NORMAL_EXCEPTION_PROLOG(0x340, BOOKE_INTERRUPT_LRAT_ERROR,
|
|
|
+ PROLOG_ADDITION_NONE)
|
|
|
+ EXCEPTION_COMMON(0x340, PACA_EXGEN, INTS_KEEP)
|
|
|
+ addi r3,r1,STACK_FRAME_OVERHEAD
|
|
|
+ bl .save_nvgprs
|
|
|
+ INTS_RESTORE_HARD
|
|
|
+ bl .unknown_exception
|
|
|
+ b .ret_from_except
|
|
|
+
|
|
|
/*
|
|
|
* An interrupt came in while soft-disabled; We mark paca->irq_happened
|
|
|
* accordingly and if the interrupt is level sensitive, we hard disable
|
|
@@ -859,6 +871,7 @@ BAD_STACK_TRAMPOLINE(0x2e0)
|
|
|
BAD_STACK_TRAMPOLINE(0x300)
|
|
|
BAD_STACK_TRAMPOLINE(0x310)
|
|
|
BAD_STACK_TRAMPOLINE(0x320)
|
|
|
+BAD_STACK_TRAMPOLINE(0x340)
|
|
|
BAD_STACK_TRAMPOLINE(0x400)
|
|
|
BAD_STACK_TRAMPOLINE(0x500)
|
|
|
BAD_STACK_TRAMPOLINE(0x600)
|
|
@@ -1414,3 +1427,7 @@ _GLOBAL(setup_ehv_ivors)
|
|
|
SET_IVOR(38, 0x2c0) /* Guest Processor Doorbell */
|
|
|
SET_IVOR(39, 0x2e0) /* Guest Processor Doorbell Crit/MC */
|
|
|
blr
|
|
|
+
|
|
|
+_GLOBAL(setup_lrat_ivor)
|
|
|
+ SET_IVOR(42, 0x340) /* LRAT Error */
|
|
|
+ blr
|