diff options
Diffstat (limited to 'arch/arm/kernel/ptrace.c')
| -rw-r--r-- | arch/arm/kernel/ptrace.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index a1d1b2906e8d..c40bdc770054 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
| @@ -634,6 +634,32 @@ static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) | |||
| 634 | 634 | ||
| 635 | #endif | 635 | #endif |
| 636 | 636 | ||
| 637 | #ifdef CONFIG_CRUNCH | ||
| 638 | /* | ||
| 639 | * Get the child Crunch state. | ||
| 640 | */ | ||
| 641 | static int ptrace_getcrunchregs(struct task_struct *tsk, void __user *ufp) | ||
| 642 | { | ||
| 643 | struct thread_info *thread = task_thread_info(tsk); | ||
| 644 | |||
| 645 | crunch_task_disable(thread); /* force it to ram */ | ||
| 646 | return copy_to_user(ufp, &thread->crunchstate, CRUNCH_SIZE) | ||
| 647 | ? -EFAULT : 0; | ||
| 648 | } | ||
| 649 | |||
| 650 | /* | ||
| 651 | * Set the child Crunch state. | ||
| 652 | */ | ||
| 653 | static int ptrace_setcrunchregs(struct task_struct *tsk, void __user *ufp) | ||
| 654 | { | ||
| 655 | struct thread_info *thread = task_thread_info(tsk); | ||
| 656 | |||
| 657 | crunch_task_release(thread); /* force a reload */ | ||
| 658 | return copy_from_user(&thread->crunchstate, ufp, CRUNCH_SIZE) | ||
| 659 | ? -EFAULT : 0; | ||
| 660 | } | ||
| 661 | #endif | ||
| 662 | |||
| 637 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 663 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) |
| 638 | { | 664 | { |
| 639 | unsigned long tmp; | 665 | unsigned long tmp; |
| @@ -765,6 +791,16 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
| 765 | child->ptrace_message = data; | 791 | child->ptrace_message = data; |
| 766 | break; | 792 | break; |
| 767 | 793 | ||
| 794 | #ifdef CONFIG_CRUNCH | ||
| 795 | case PTRACE_GETCRUNCHREGS: | ||
| 796 | ret = ptrace_getcrunchregs(child, (void __user *)data); | ||
| 797 | break; | ||
| 798 | |||
| 799 | case PTRACE_SETCRUNCHREGS: | ||
| 800 | ret = ptrace_setcrunchregs(child, (void __user *)data); | ||
| 801 | break; | ||
| 802 | #endif | ||
| 803 | |||
| 768 | default: | 804 | default: |
| 769 | ret = ptrace_request(child, request, addr, data); | 805 | ret = ptrace_request(child, request, addr, data); |
| 770 | break; | 806 | break; |
