aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/traps.c
diff options
context:
space:
mode:
authorHendrik Brueckner <brueckner@linux.vnet.ibm.com>2015-06-29 10:43:06 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2015-08-03 04:04:37 -0400
commitd0164ee20d98847d3c777a0ae90e678e7ac1e416 (patch)
tree524bb68d1e46da8876da38e683b5474a7ec7f7ac /arch/s390/kernel/traps.c
parent2a01bd1bd3d28d1eef26d5509c95d0923f7dc75c (diff)
s390/kernel: remove save_fpu_regs() parameter and use __LC_CURRENT instead
All calls to save_fpu_regs() specify the fpu structure of the current task pointer as parameter. The task pointer of the current task can also be retrieved from the CPU lowcore directly. Remove the parameter definition, load the __LC_CURRENT task pointer from the CPU lowcore, and rebase the FPU structure onto the task structure. Apply the same approach for the load_fpu_regs() function. Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/traps.c')
-rw-r--r--arch/s390/kernel/traps.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 76f76932ccb9..9861613fb35a 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -236,7 +236,7 @@ int alloc_vector_registers(struct task_struct *tsk)
236 return -ENOMEM; 236 return -ENOMEM;
237 preempt_disable(); 237 preempt_disable();
238 if (tsk == current) 238 if (tsk == current)
239 save_fpu_regs(&tsk->thread.fpu); 239 save_fpu_regs();
240 /* Copy the 16 floating point registers */ 240 /* Copy the 16 floating point registers */
241 convert_fp_to_vx(vxrs, tsk->thread.fpu.fprs); 241 convert_fp_to_vx(vxrs, tsk->thread.fpu.fprs);
242 fprs = tsk->thread.fpu.fprs; 242 fprs = tsk->thread.fpu.fprs;
@@ -257,7 +257,7 @@ void vector_exception(struct pt_regs *regs)
257 } 257 }
258 258
259 /* get vector interrupt code from fpc */ 259 /* get vector interrupt code from fpc */
260 save_fpu_regs(&current->thread.fpu); 260 save_fpu_regs();
261 vic = (current->thread.fpu.fpc & 0xf00) >> 8; 261 vic = (current->thread.fpu.fpc & 0xf00) >> 8;
262 switch (vic) { 262 switch (vic) {
263 case 1: /* invalid vector operation */ 263 case 1: /* invalid vector operation */
@@ -295,7 +295,7 @@ void data_exception(struct pt_regs *regs)
295 295
296 location = get_trap_ip(regs); 296 location = get_trap_ip(regs);
297 297
298 save_fpu_regs(&current->thread.fpu); 298 save_fpu_regs();
299 /* Check for vector register enablement */ 299 /* Check for vector register enablement */
300 if (MACHINE_HAS_VX && !is_vx_task(current) && 300 if (MACHINE_HAS_VX && !is_vx_task(current) &&
301 (current->thread.fpu.fpc & FPC_DXC_MASK) == 0xfe00) { 301 (current->thread.fpu.fpc & FPC_DXC_MASK) == 0xfe00) {