diff options
author | Alexander Graf <agraf@suse.de> | 2012-04-25 08:28:23 -0400 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2012-05-06 10:19:09 -0400 |
commit | 8c2d0be7efb0b92b5e4f89ea4363f3cdc11e2459 (patch) | |
tree | ebc66d35253d071517038a0c8608205011354896 /arch/powerpc/kvm | |
parent | 30124906db8598255fba32c8bf0adb7e8f1503ab (diff) |
KVM: PPC: Book3S: PR: Optimize entry path
By shuffling a few instructions around we can execute more memory
loads in parallel, giving us a small performance boost.
With this patch and a simple priviledged SPR access loop guest, I get
a speed bump from 2013052 to 2035607 exits per second.
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r-- | arch/powerpc/kvm/book3s_segment.S | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/powerpc/kvm/book3s_segment.S b/arch/powerpc/kvm/book3s_segment.S index 0676ae249b9f..6bae0a9414ba 100644 --- a/arch/powerpc/kvm/book3s_segment.S +++ b/arch/powerpc/kvm/book3s_segment.S | |||
@@ -128,24 +128,25 @@ no_dcbz32_on: | |||
128 | /* First clear RI in our current MSR value */ | 128 | /* First clear RI in our current MSR value */ |
129 | li r0, MSR_RI | 129 | li r0, MSR_RI |
130 | andc r6, r6, r0 | 130 | andc r6, r6, r0 |
131 | MTMSR_EERI(r6) | ||
132 | mtsrr0 r9 | ||
133 | mtsrr1 r4 | ||
134 | 131 | ||
135 | PPC_LL r0, SVCPU_R0(r3) | 132 | PPC_LL r0, SVCPU_R0(r3) |
136 | PPC_LL r1, SVCPU_R1(r3) | 133 | PPC_LL r1, SVCPU_R1(r3) |
137 | PPC_LL r2, SVCPU_R2(r3) | 134 | PPC_LL r2, SVCPU_R2(r3) |
138 | PPC_LL r4, SVCPU_R4(r3) | ||
139 | PPC_LL r5, SVCPU_R5(r3) | 135 | PPC_LL r5, SVCPU_R5(r3) |
140 | PPC_LL r6, SVCPU_R6(r3) | ||
141 | PPC_LL r7, SVCPU_R7(r3) | 136 | PPC_LL r7, SVCPU_R7(r3) |
142 | PPC_LL r8, SVCPU_R8(r3) | 137 | PPC_LL r8, SVCPU_R8(r3) |
143 | PPC_LL r9, SVCPU_R9(r3) | ||
144 | PPC_LL r10, SVCPU_R10(r3) | 138 | PPC_LL r10, SVCPU_R10(r3) |
145 | PPC_LL r11, SVCPU_R11(r3) | 139 | PPC_LL r11, SVCPU_R11(r3) |
146 | PPC_LL r12, SVCPU_R12(r3) | 140 | PPC_LL r12, SVCPU_R12(r3) |
147 | PPC_LL r13, SVCPU_R13(r3) | 141 | PPC_LL r13, SVCPU_R13(r3) |
148 | 142 | ||
143 | MTMSR_EERI(r6) | ||
144 | mtsrr0 r9 | ||
145 | mtsrr1 r4 | ||
146 | |||
147 | PPC_LL r4, SVCPU_R4(r3) | ||
148 | PPC_LL r6, SVCPU_R6(r3) | ||
149 | PPC_LL r9, SVCPU_R9(r3) | ||
149 | PPC_LL r3, (SVCPU_R3)(r3) | 150 | PPC_LL r3, (SVCPU_R3)(r3) |
150 | 151 | ||
151 | RFI | 152 | RFI |