Commit 9cbff7f2 authored by Heiko Carstens's avatar Heiko Carstens
Browse files

s390/fpu: remove regs member from struct fpu



KVM was the only user which modified the regs pointer in struct fpu. Remove
the pointer and convert the rest of the core fpu code to directly access
the save area embedded within struct fpu.

Reviewed-by: default avatarClaudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent ed3a0a01
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -13,7 +13,6 @@

struct fpu {
	__u32 fpc;		/* Floating-point control */
	void *regs;		/* Pointer to the current save area */
	union {
		/* Floating-point register save area */
		freg_t fprs[__NUM_FPRS];
+0 −1
Original line number Diff line number Diff line
@@ -202,7 +202,6 @@ typedef struct thread_struct thread_struct;

#define INIT_THREAD {							\
	.ksp = sizeof(init_stack) + (unsigned long) &init_stack,	\
	.ufpu.regs = (void *)init_task.thread.ufpu.fprs,		\
	.last_break = 1,						\
}

+4 −7
Original line number Diff line number Diff line
@@ -110,13 +110,12 @@ EXPORT_SYMBOL(__kernel_fpu_end);
void __load_user_fpu_regs(void)
{
	struct fpu *state = &current->thread.ufpu;
	void *regs = current->thread.ufpu.regs;

	fpu_lfpc_safe(&state->fpc);
	if (likely(cpu_has_vx()))
		load_vx_regs(regs);
		load_vx_regs(state->vxrs);
	else
		load_fp_regs(regs);
		load_fp_regs(state->fprs);
	clear_thread_flag(TIF_FPU);
}

@@ -132,7 +131,6 @@ void save_user_fpu_regs(void)
{
	unsigned long flags;
	struct fpu *state;
	void *regs;

	local_irq_save(flags);

@@ -140,13 +138,12 @@ void save_user_fpu_regs(void)
		goto out;

	state = &current->thread.ufpu;
	regs = current->thread.ufpu.regs;

	fpu_stfpc(&state->fpc);
	if (likely(cpu_has_vx()))
		save_vx_regs(regs);
		save_vx_regs(state->vxrs);
	else
		save_fp_regs(regs);
		save_fp_regs(state->fprs);
	set_thread_flag(TIF_FPU);
out:
	local_irq_restore(flags);
+0 −1
Original line number Diff line number Diff line
@@ -94,7 +94,6 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
	save_user_fpu_regs();

	*dst = *src;
	dst->thread.ufpu.regs = dst->thread.ufpu.fprs;
	dst->thread.kfpu_flags = 0;

	/*