KVM: switch irq injection/acking data structures to irq_lock
[deliverable/linux.git] / arch / ia64 / kvm / optvfault.S
index 32254ce9a1bda61a25f3edce6143206a7d651aa1..f793be3effff5a773c3f5586994b374d1a5d2f82 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <asm/asmmacro.h>
 #include <asm/processor.h>
+#include <asm/kvm_host.h>
 
 #include "vti.h"
 #include "asm-offsets.h"
@@ -140,6 +141,35 @@ GLOBAL_ENTRY(kvm_asm_mov_from_ar)
        ;;
 END(kvm_asm_mov_from_ar)
 
+/*
+ * Special SGI SN2 optimized version of mov_from_ar using the SN2 RTC
+ * clock as it's source for emulating the ITC. This version will be
+ * copied on top of the original version if the host is determined to
+ * be an SN2.
+ */
+GLOBAL_ENTRY(kvm_asm_mov_from_ar_sn2)
+       add r18=VMM_VCPU_ITC_OFS_OFFSET, r21
+       movl r19 = (KVM_VMM_BASE+(1<<KVM_VMM_SHIFT))
+
+       add r16=VMM_VCPU_LAST_ITC_OFFSET,r21
+       extr.u r17=r25,6,7
+       mov r24=b0
+       ;;
+       ld8 r18=[r18]
+       ld8 r19=[r19]
+       addl r20=@gprel(asm_mov_to_reg),gp
+       ;;
+       add r19=r19,r18
+       shladd r17=r17,4,r20
+       ;;
+       adds r30=kvm_resume_to_guest-asm_mov_to_reg,r20
+       st8 [r16] = r19
+       mov b0=r17
+       br.sptk.few b0
+       ;;
+END(kvm_asm_mov_from_ar_sn2)
+
+
 
 // mov r1=rr[r3]
 GLOBAL_ENTRY(kvm_asm_mov_from_rr)
This page took 0.024906 seconds and 5 git commands to generate.