mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
powerpc/32: Remove verification of MSR_PR on syscall in the ASM entry
system_call_exception() checks MSR_PR and BUGs if a syscall is issued from kernel mode. No need to handle it anymore from the ASM entry code. null_syscall reduction 2 cycles (348 => 346 cycles) Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/1eddb42cb12092b1e3d72608d182c365db3da41d.1612796617.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
6f76a01173
commit
4d67facbcb
3 changed files with 0 additions and 36 deletions
|
@ -421,36 +421,6 @@ ret_from_kernel_thread:
|
|||
li r3,0
|
||||
b ret_from_syscall
|
||||
|
||||
/*
|
||||
* System call was called from kernel. We get here with SRR1 in r9.
|
||||
* Mark the exception as recoverable once we have retrieved SRR0,
|
||||
* trap a warning and return ENOSYS with CR[SO] set.
|
||||
*/
|
||||
.globl ret_from_kernel_syscall
|
||||
ret_from_kernel_syscall:
|
||||
mfspr r9, SPRN_SRR0
|
||||
mfspr r10, SPRN_SRR1
|
||||
#if !defined(CONFIG_4xx) && !defined(CONFIG_BOOKE)
|
||||
LOAD_REG_IMMEDIATE(r11, MSR_KERNEL & ~(MSR_IR|MSR_DR))
|
||||
mtmsr r11
|
||||
#endif
|
||||
|
||||
0: trap
|
||||
EMIT_BUG_ENTRY 0b,__FILE__,__LINE__, BUGFLAG_WARNING
|
||||
|
||||
li r3, ENOSYS
|
||||
crset so
|
||||
#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PERF_EVENTS)
|
||||
mtspr SPRN_NRI, r0
|
||||
#endif
|
||||
mtspr SPRN_SRR0, r9
|
||||
mtspr SPRN_SRR1, r10
|
||||
rfi
|
||||
#ifdef CONFIG_40x
|
||||
b . /* Prevent prefetch past rfi */
|
||||
#endif
|
||||
_ASM_NOKPROBE_SYMBOL(ret_from_kernel_syscall)
|
||||
|
||||
/*
|
||||
* Top-level page fault handling.
|
||||
* This is in assembler because if do_page_fault tells us that
|
||||
|
|
|
@ -118,8 +118,6 @@
|
|||
.macro SYSCALL_ENTRY trapno
|
||||
mfspr r9, SPRN_SRR1
|
||||
mfspr r10, SPRN_SRR0
|
||||
andi. r11, r9, MSR_PR
|
||||
beq- 99f
|
||||
LOAD_REG_IMMEDIATE(r11, MSR_KERNEL) /* can take exceptions */
|
||||
lis r12, 1f@h
|
||||
ori r12, r12, 1f@l
|
||||
|
@ -174,7 +172,6 @@
|
|||
3:
|
||||
#endif
|
||||
b transfer_to_syscall /* jump to handler */
|
||||
99: b ret_from_kernel_syscall
|
||||
.endm
|
||||
|
||||
.macro save_dar_dsisr_on_stack reg1, reg2, sp
|
||||
|
|
|
@ -106,10 +106,8 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV)
|
|||
#endif
|
||||
mfspr r9, SPRN_SRR1
|
||||
BOOKE_CLEAR_BTB(r11)
|
||||
andi. r11, r9, MSR_PR
|
||||
lwz r11, TASK_STACK - THREAD(r10)
|
||||
rlwinm r12,r12,0,4,2 /* Clear SO bit in CR */
|
||||
beq- 99f
|
||||
ALLOC_STACK_FRAME(r11, THREAD_SIZE - INT_FRAME_SIZE)
|
||||
stw r12, _CCR(r11) /* save various registers */
|
||||
mflr r12
|
||||
|
@ -155,7 +153,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV)
|
|||
|
||||
3:
|
||||
b transfer_to_syscall /* jump to handler */
|
||||
99: b ret_from_kernel_syscall
|
||||
.endm
|
||||
|
||||
/* To handle the additional exception priority levels on 40x and Book-E
|
||||
|
|
Loading…
Add table
Reference in a new issue