aboutsummaryrefslogtreecommitdiff
path: root/arch/powerpc/kernel/interrupt_64.S
diff options
context:
space:
mode:
authorGravatar Nicholas Piggin <npiggin@gmail.com> 2023-03-25 22:28:59 +1000
committerGravatar Michael Ellerman <mpe@ellerman.id.au> 2023-04-11 23:13:32 +1000
commitaf5ca9d5c8b45244b237d7a5534e1ec2d01cce8e (patch)
treeeb23a6cd9966f8b18a903abbb9d7338b4194f4f7 /arch/powerpc/kernel/interrupt_64.S
parentpowerpc: copy_thread make ret_from_fork register setup consistent (diff)
downloadlinux-af5ca9d5c8b45244b237d7a5534e1ec2d01cce8e.tar.gz
linux-af5ca9d5c8b45244b237d7a5534e1ec2d01cce8e.tar.bz2
linux-af5ca9d5c8b45244b237d7a5534e1ec2d01cce8e.zip
powerpc: use switch frame for ret_from_kernel_thread parameters
The kernel thread path in copy_thread creates a user interrupt frame on stack and stores the function and arg parameters there, and ret_from_kernel_thread loads them. This is a slightly confusing way to overload that frame. Non-volatile registers are loaded from the switch frame, so the parameters can be stored there. The user interrupt frame is now only used by user threads when they return to user. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20230325122904.2375060-4-npiggin@gmail.com
Diffstat (limited to 'arch/powerpc/kernel/interrupt_64.S')
-rw-r--r--arch/powerpc/kernel/interrupt_64.S1
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/interrupt_64.S b/arch/powerpc/kernel/interrupt_64.S
index fccc34489add..d60e7e7564df 100644
--- a/arch/powerpc/kernel/interrupt_64.S
+++ b/arch/powerpc/kernel/interrupt_64.S
@@ -741,7 +741,6 @@ _GLOBAL(ret_from_fork)
_GLOBAL(ret_from_kernel_thread)
bl schedule_tail
- REST_NVGPRS(r1)
mtctr r14
mr r3,r15
#ifdef CONFIG_PPC64_ELF_ABI_V2