mirror of
https://github.com/torvalds/linux.git
synced 2026-04-28 19:42:31 -04:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user