aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm64/kvm/hyp/hyp-entry.S11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/arm64/kvm/hyp/hyp-entry.S b/arch/arm64/kvm/hyp/hyp-entry.S
index d6cae5428b95..d2f6640d8825 100644
--- a/arch/arm64/kvm/hyp/hyp-entry.S
+++ b/arch/arm64/kvm/hyp/hyp-entry.S
@@ -120,6 +120,12 @@ el1_irq:
120 mov x0, #ARM_EXCEPTION_IRQ 120 mov x0, #ARM_EXCEPTION_IRQ
121 b __guest_exit 121 b __guest_exit
122 122
123el1_error:
124 stp x0, x1, [sp, #-16]!
125 mrs x1, tpidr_el2
126 mov x0, #ARM_EXCEPTION_EL1_SERROR
127 b __guest_exit
128
123ENTRY(__hyp_do_panic) 129ENTRY(__hyp_do_panic)
124 mov lr, #(PSR_F_BIT | PSR_I_BIT | PSR_A_BIT | PSR_D_BIT |\ 130 mov lr, #(PSR_F_BIT | PSR_I_BIT | PSR_A_BIT | PSR_D_BIT |\
125 PSR_MODE_EL1h) 131 PSR_MODE_EL1h)
@@ -148,7 +154,6 @@ ENDPROC(\label)
148 invalid_vector el1_sync_invalid 154 invalid_vector el1_sync_invalid
149 invalid_vector el1_irq_invalid 155 invalid_vector el1_irq_invalid
150 invalid_vector el1_fiq_invalid 156 invalid_vector el1_fiq_invalid
151 invalid_vector el1_error_invalid
152 157
153 .ltorg 158 .ltorg
154 159
@@ -168,10 +173,10 @@ ENTRY(__kvm_hyp_vector)
168 ventry el1_sync // Synchronous 64-bit EL1 173 ventry el1_sync // Synchronous 64-bit EL1
169 ventry el1_irq // IRQ 64-bit EL1 174 ventry el1_irq // IRQ 64-bit EL1
170 ventry el1_fiq_invalid // FIQ 64-bit EL1 175 ventry el1_fiq_invalid // FIQ 64-bit EL1
171 ventry el1_error_invalid // Error 64-bit EL1 176 ventry el1_error // Error 64-bit EL1
172 177
173 ventry el1_sync // Synchronous 32-bit EL1 178 ventry el1_sync // Synchronous 32-bit EL1
174 ventry el1_irq // IRQ 32-bit EL1 179 ventry el1_irq // IRQ 32-bit EL1
175 ventry el1_fiq_invalid // FIQ 32-bit EL1 180 ventry el1_fiq_invalid // FIQ 32-bit EL1
176 ventry el1_error_invalid // Error 32-bit EL1 181 ventry el1_error // Error 32-bit EL1
177ENDPROC(__kvm_hyp_vector) 182ENDPROC(__kvm_hyp_vector)