Skip to content

Commit

Permalink
powerpc/64s/exception: clean up system call entry
Browse files Browse the repository at this point in the history
syscall / hcall entry unnecessarily differs between KVM and non-KVM
builds. Move the SMT priority instruction to the same location
(after INTERRUPT_TO_KERNEL).

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Nicholas Piggin authored and Michael Ellerman committed Jul 2, 2019
1 parent 1582009 commit b0b2a93
Showing 1 changed file with 7 additions and 17 deletions.
24 changes: 7 additions & 17 deletions arch/powerpc/kernel/exceptions-64s.S
Original file line number Diff line number Diff line change
Expand Up @@ -1638,10 +1638,8 @@ EXC_COMMON(trap_0b_common, 0xb00, unknown_exception)
std r10,PACA_EXGEN+EX_R10(r13)
INTERRUPT_TO_KERNEL
KVMTEST EXC_STD 0xc00 /* uses r10, branch to do_kvm_0xc00_system_call */
HMT_MEDIUM
mfctr r9
#else
HMT_MEDIUM
mr r9,r13
GET_PACA(r13)
INTERRUPT_TO_KERNEL
Expand All @@ -1653,36 +1651,28 @@ BEGIN_FTR_SECTION
beq- 1f
END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE)
#endif
/* We reach here with PACA in r13, r13 in r9, and HMT_MEDIUM. */

.if ! \virt
/* We reach here with PACA in r13, r13 in r9. */
mfspr r11,SPRN_SRR0
mfspr r12,SPRN_SRR1

HMT_MEDIUM

.if ! \virt
__LOAD_HANDLER(r10, system_call_common)
mtspr SPRN_SRR0,r10
ld r10,PACAKMSR(r13)
mtspr SPRN_SRR1,r10
RFI_TO_KERNEL
b . /* prevent speculative execution */
.else
li r10,MSR_RI
mtmsrd r10,1 /* Set RI (EE=0) */
#ifdef CONFIG_RELOCATABLE
/*
* We can't branch directly so we do it via the CTR which
* is volatile across system calls.
*/
__LOAD_HANDLER(r10, system_call_common)
mtctr r10
mfspr r11,SPRN_SRR0
mfspr r12,SPRN_SRR1
li r10,MSR_RI
mtmsrd r10,1
bctr
#else
/* We can branch directly */
mfspr r11,SPRN_SRR0
mfspr r12,SPRN_SRR1
li r10,MSR_RI
mtmsrd r10,1 /* Set RI (EE=0) */
b system_call_common
#endif
.endif
Expand Down

0 comments on commit b0b2a93

Please sign in to comment.