Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 101745
b: refs/heads/master
c: f3e909c
h: refs/heads/master
i:
  101743: c8d243c
v: v3
  • Loading branch information
Michael Neuling authored and Paul Mackerras committed Jul 1, 2008
1 parent 1ae2674 commit dc1bf39
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 436db693c4f4d02d375780a1f0b2ebdca2451cd6
refs/heads/master: f3e909c2750eb20536bacacc867dc9047b70546a
19 changes: 1 addition & 18 deletions trunk/arch/powerpc/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ void flush_altivec_to_thread(struct task_struct *tsk)
}
}

int dump_task_altivec(struct task_struct *tsk, elf_vrreg_t *vrregs)
int dump_task_altivec(struct task_struct *tsk, elf_vrregset_t *vrregs)
{
/* ELF_NVRREG includes the VSCR and VRSAVE which we need to save
* separately, see below */
Expand Down Expand Up @@ -249,23 +249,6 @@ int dump_task_vsx(struct task_struct *tsk, elf_vrreg_t *vrregs)
}
#endif /* CONFIG_VSX */

int dump_task_vector(struct task_struct *tsk, elf_vrregset_t *vrregs)
{
int rc = 0;
elf_vrreg_t *regs = (elf_vrreg_t *)vrregs;
#ifdef CONFIG_ALTIVEC
rc = dump_task_altivec(tsk, regs);
if (rc)
return rc;
regs += ELF_NVRREG;
#endif

#ifdef CONFIG_VSX
rc = dump_task_vsx(tsk, regs);
#endif
return rc;
}

#ifdef CONFIG_SPE

void enable_kernel_spe(void)
Expand Down
21 changes: 13 additions & 8 deletions trunk/arch/powerpc/kernel/ptrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,13 +368,15 @@ static int vsr_get(struct task_struct *target, const struct user_regset *regset,
unsigned int pos, unsigned int count,
void *kbuf, void __user *ubuf)
{
int ret;
double buf[32];
int ret, i;

flush_vsx_to_thread(target);

for (i = 0; i < 32 ; i++)
buf[i] = current->thread.fpr[i][TS_VSRLOWOFFSET];
ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
target->thread.fpr, 0,
32 * sizeof(vector128));
buf, 0, 32 * sizeof(double));

return ret;
}
Expand All @@ -383,13 +385,16 @@ static int vsr_set(struct task_struct *target, const struct user_regset *regset,
unsigned int pos, unsigned int count,
const void *kbuf, const void __user *ubuf)
{
int ret;
double buf[32];
int ret,i;

flush_vsx_to_thread(target);

ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
target->thread.fpr, 0,
32 * sizeof(vector128));
buf, 0, 32 * sizeof(double));
for (i = 0; i < 32 ; i++)
current->thread.fpr[i][TS_VSRLOWOFFSET] = buf[i];


return ret;
}
Expand Down Expand Up @@ -499,8 +504,8 @@ static const struct user_regset native_regsets[] = {
#endif
#ifdef CONFIG_VSX
[REGSET_VSX] = {
.n = 32,
.size = sizeof(vector128), .align = sizeof(vector128),
.core_note_type = NT_PPC_VSX, .n = 32,
.size = sizeof(double), .align = sizeof(double),
.active = vsr_active, .get = vsr_get, .set = vsr_set
},
#endif
Expand Down
4 changes: 2 additions & 2 deletions trunk/include/asm-powerpc/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -221,8 +221,8 @@ extern int dump_task_fpu(struct task_struct *, elf_fpregset_t *);
typedef elf_vrregset_t elf_fpxregset_t;

#ifdef CONFIG_ALTIVEC
extern int dump_task_vector(struct task_struct *, elf_vrregset_t *vrregs);
#define ELF_CORE_COPY_XFPREGS(tsk, regs) dump_task_vector(tsk, regs)
extern int dump_task_altivec(struct task_struct *, elf_vrregset_t *vrregs);
#define ELF_CORE_COPY_XFPREGS(tsk, regs) dump_task_altivec(tsk, regs)
#define ELF_CORE_XFPREG_TYPE NT_PPC_VMX
#endif

Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,7 @@ typedef struct elf64_shdr {
#define NT_PRXFPREG 0x46e62b7f /* copied from gdb5.1/include/elf/common.h */
#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */
#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */
#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */


Expand Down

0 comments on commit dc1bf39

Please sign in to comment.