s390/switch_to: use generic header file

Move the switch_to() implementation to process.c and use the generic
switch_to.h header file instead, like some other architectures.

This addresses also the oddity that the old switch_to() implementation
assigns the return value of __switch_to() to 'prev' instead of 'last',
like it should.

Remove also all includes of switch_to.h from C files, except process.c.

Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
Heiko Carstens
2024-02-05 21:32:13 +01:00
parent 304103736b
commit 340750c13c
11 changed files with 34 additions and 48 deletions

View File

@@ -31,15 +31,18 @@
#include <linux/init_task.h>
#include <linux/entry-common.h>
#include <linux/io.h>
#include <asm/guarded_storage.h>
#include <asm/access-regs.h>
#include <asm/switch_to.h>
#include <asm/cpu_mf.h>
#include <asm/processor.h>
#include <asm/ptrace.h>
#include <asm/vtimer.h>
#include <asm/exec.h>
#include <asm/irq.h>
#include <asm/nmi.h>
#include <asm/smp.h>
#include <asm/stacktrace.h>
#include <asm/switch_to.h>
#include <asm/runtime_instr.h>
#include <asm/unwind.h>
#include "entry.h"
@@ -190,6 +193,24 @@ void execve_tail(void)
asm volatile("sfpc %0" : : "d" (0));
}
struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *next)
{
/*
* save_fpu_regs() sets the CIF_FPU flag, which enforces
* a restore of the floating point / vector registers as
* soon as the next task returns to user space.
*/
save_fpu_regs();
save_access_regs(&prev->thread.acrs[0]);
save_ri_cb(prev->thread.ri_cb);
save_gs_cb(prev->thread.gs_cb);
update_cr_regs(next);
restore_access_regs(&next->thread.acrs[0]);
restore_ri_cb(next->thread.ri_cb, prev->thread.ri_cb);
restore_gs_cb(next->thread.gs_cb);
return __switch_to_asm(prev, next);
}
unsigned long __get_wchan(struct task_struct *p)
{
struct unwind_state state;