Commit b0b2a93d authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman

powerpc/64s/exception: clean up system call entry

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: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 15820091
...@@ -1638,10 +1638,8 @@ EXC_COMMON(trap_0b_common, 0xb00, unknown_exception) ...@@ -1638,10 +1638,8 @@ EXC_COMMON(trap_0b_common, 0xb00, unknown_exception)
std r10,PACA_EXGEN+EX_R10(r13) std r10,PACA_EXGEN+EX_R10(r13)
INTERRUPT_TO_KERNEL INTERRUPT_TO_KERNEL
KVMTEST EXC_STD 0xc00 /* uses r10, branch to do_kvm_0xc00_system_call */ KVMTEST EXC_STD 0xc00 /* uses r10, branch to do_kvm_0xc00_system_call */
HMT_MEDIUM
mfctr r9 mfctr r9
#else #else
HMT_MEDIUM
mr r9,r13 mr r9,r13
GET_PACA(r13) GET_PACA(r13)
INTERRUPT_TO_KERNEL INTERRUPT_TO_KERNEL
...@@ -1653,11 +1651,14 @@ BEGIN_FTR_SECTION ...@@ -1653,11 +1651,14 @@ BEGIN_FTR_SECTION
beq- 1f beq- 1f
END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE) END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE)
#endif #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 r11,SPRN_SRR0
mfspr r12,SPRN_SRR1 mfspr r12,SPRN_SRR1
HMT_MEDIUM
.if ! \virt
__LOAD_HANDLER(r10, system_call_common) __LOAD_HANDLER(r10, system_call_common)
mtspr SPRN_SRR0,r10 mtspr SPRN_SRR0,r10
ld r10,PACAKMSR(r13) ld r10,PACAKMSR(r13)
...@@ -1665,24 +1666,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE) ...@@ -1665,24 +1666,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE)
RFI_TO_KERNEL RFI_TO_KERNEL
b . /* prevent speculative execution */ b . /* prevent speculative execution */
.else .else
li r10,MSR_RI
mtmsrd r10,1 /* Set RI (EE=0) */
#ifdef CONFIG_RELOCATABLE #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) __LOAD_HANDLER(r10, system_call_common)
mtctr r10 mtctr r10
mfspr r11,SPRN_SRR0
mfspr r12,SPRN_SRR1
li r10,MSR_RI
mtmsrd r10,1
bctr bctr
#else #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 b system_call_common
#endif #endif
.endif .endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment