diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2009-02-11 07:12:56 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-02-12 05:59:43 -0500 |
commit | 3d1228ead618b88e8606015cbabc49019981805d (patch) | |
tree | 5d44c936c12ff2e99732f535dd393af201e7fe67 /arch/arm/include | |
parent | f373e8c0639f1720d2d0fe414990f504e113c2ba (diff) |
[ARM] 5387/1: Add ptrace VFP support on ARM
This patch adds ptrace support for setting and getting the VFP registers
using PTRACE_SETVFPREGS and PTRACE_GETVFPREGS. The user_vfp structure
defined in asm/user.h contains 32 double registers (to cover VFPv3 and
Neon hardware) and the FPSCR register.
Cc: Paul Brook <paul@codesourcery.com>
Cc: Daniel Jacobowitz <dan@codesourcery.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/ptrace.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/thread_info.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/user.h | 9 |
3 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index 73192618f1c2..236a06b9b7ce 100644 --- a/arch/arm/include/asm/ptrace.h +++ b/arch/arm/include/asm/ptrace.h | |||
@@ -27,6 +27,8 @@ | |||
27 | /* PTRACE_SYSCALL is 24 */ | 27 | /* PTRACE_SYSCALL is 24 */ |
28 | #define PTRACE_GETCRUNCHREGS 25 | 28 | #define PTRACE_GETCRUNCHREGS 25 |
29 | #define PTRACE_SETCRUNCHREGS 26 | 29 | #define PTRACE_SETCRUNCHREGS 26 |
30 | #define PTRACE_GETVFPREGS 27 | ||
31 | #define PTRACE_SETVFPREGS 28 | ||
30 | 32 | ||
31 | /* | 33 | /* |
32 | * PSR bits | 34 | * PSR bits |
diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h index 68b9ec82a37f..b9dc8a842573 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h | |||
@@ -113,6 +113,8 @@ extern void iwmmxt_task_restore(struct thread_info *, void *); | |||
113 | extern void iwmmxt_task_release(struct thread_info *); | 113 | extern void iwmmxt_task_release(struct thread_info *); |
114 | extern void iwmmxt_task_switch(struct thread_info *); | 114 | extern void iwmmxt_task_switch(struct thread_info *); |
115 | 115 | ||
116 | extern void vfp_sync_state(struct thread_info *thread); | ||
117 | |||
116 | #endif | 118 | #endif |
117 | 119 | ||
118 | /* | 120 | /* |
diff --git a/arch/arm/include/asm/user.h b/arch/arm/include/asm/user.h index 825c1e7c582d..df95e050f9dd 100644 --- a/arch/arm/include/asm/user.h +++ b/arch/arm/include/asm/user.h | |||
@@ -81,4 +81,13 @@ struct user{ | |||
81 | #define HOST_TEXT_START_ADDR (u.start_code) | 81 | #define HOST_TEXT_START_ADDR (u.start_code) |
82 | #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) | 82 | #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) |
83 | 83 | ||
84 | /* | ||
85 | * User specific VFP registers. If only VFPv2 is present, registers 16 to 31 | ||
86 | * are ignored by the ptrace system call. | ||
87 | */ | ||
88 | struct user_vfp { | ||
89 | unsigned long long fpregs[32]; | ||
90 | unsigned long fpscr; | ||
91 | }; | ||
92 | |||
84 | #endif /* _ARM_USER_H */ | 93 | #endif /* _ARM_USER_H */ |