aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/ptrace.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/ptrace.c')
-rw-r--r--arch/arm/kernel/ptrace.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
index bdf002bab6a5..08f899fb76a6 100644
--- a/arch/arm/kernel/ptrace.c
+++ b/arch/arm/kernel/ptrace.c
@@ -700,7 +700,7 @@ static int ptrace_getvfpregs(struct task_struct *tsk, void __user *data)
700 union vfp_state *vfp = &thread->vfpstate; 700 union vfp_state *vfp = &thread->vfpstate;
701 struct user_vfp __user *ufp = data; 701 struct user_vfp __user *ufp = data;
702 702
703 vfp_sync_state(thread); 703 vfp_sync_hwstate(thread);
704 704
705 /* copy the floating point registers */ 705 /* copy the floating point registers */
706 if (copy_to_user(&ufp->fpregs, &vfp->hard.fpregs, 706 if (copy_to_user(&ufp->fpregs, &vfp->hard.fpregs,
@@ -723,7 +723,7 @@ static int ptrace_setvfpregs(struct task_struct *tsk, void __user *data)
723 union vfp_state *vfp = &thread->vfpstate; 723 union vfp_state *vfp = &thread->vfpstate;
724 struct user_vfp __user *ufp = data; 724 struct user_vfp __user *ufp = data;
725 725
726 vfp_sync_state(thread); 726 vfp_sync_hwstate(thread);
727 727
728 /* copy the floating point registers */ 728 /* copy the floating point registers */
729 if (copy_from_user(&vfp->hard.fpregs, &ufp->fpregs, 729 if (copy_from_user(&vfp->hard.fpregs, &ufp->fpregs,
@@ -734,6 +734,8 @@ static int ptrace_setvfpregs(struct task_struct *tsk, void __user *data)
734 if (get_user(vfp->hard.fpscr, &ufp->fpscr)) 734 if (get_user(vfp->hard.fpscr, &ufp->fpscr))
735 return -EFAULT; 735 return -EFAULT;
736 736
737 vfp_flush_hwstate(thread);
738
737 return 0; 739 return 0;
738} 740}
739#endif 741#endif