diff options
Diffstat (limited to 'arch/arm/kernel/ptrace.c')
-rw-r--r-- | arch/arm/kernel/ptrace.c | 6 |
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 |