aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/process.c19
-rw-r--r--arch/alpha/kernel/ptrace.c7
2 files changed, 9 insertions, 17 deletions
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index 982d732a8705..9924fd07743a 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -428,30 +428,15 @@ dump_elf_thread(elf_greg_t *dest, struct pt_regs *pt, struct thread_info *ti)
428int 428int
429dump_elf_task(elf_greg_t *dest, struct task_struct *task) 429dump_elf_task(elf_greg_t *dest, struct task_struct *task)
430{ 430{
431 struct thread_info *ti; 431 dump_elf_thread(dest, task_pt_regs(task), task_thread_info(task));
432 struct pt_regs *pt;
433
434 ti = task->thread_info;
435 pt = (struct pt_regs *)((unsigned long)ti + 2*PAGE_SIZE) - 1;
436
437 dump_elf_thread(dest, pt, ti);
438
439 return 1; 432 return 1;
440} 433}
441 434
442int 435int
443dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task) 436dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task)
444{ 437{
445 struct thread_info *ti; 438 struct switch_stack *sw = (struct switch_stack *)task_pt_regs(task) - 1;
446 struct pt_regs *pt;
447 struct switch_stack *sw;
448
449 ti = task->thread_info;
450 pt = (struct pt_regs *)((unsigned long)ti + 2*PAGE_SIZE) - 1;
451 sw = (struct switch_stack *)pt - 1;
452
453 memcpy(dest, sw->fp, 32 * 8); 439 memcpy(dest, sw->fp, 32 * 8);
454
455 return 1; 440 return 1;
456} 441}
457 442
diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c
index 9069281313a3..0cd060598f9a 100644
--- a/arch/alpha/kernel/ptrace.c
+++ b/arch/alpha/kernel/ptrace.c
@@ -72,6 +72,13 @@ enum {
72 REG_R0 = 0, REG_F0 = 32, REG_FPCR = 63, REG_PC = 64 72 REG_R0 = 0, REG_F0 = 32, REG_FPCR = 63, REG_PC = 64
73}; 73};
74 74
75#define PT_REG(reg) \
76 (PAGE_SIZE*2 - sizeof(struct pt_regs) + offsetof(struct pt_regs, reg))
77
78#define SW_REG(reg) \
79 (PAGE_SIZE*2 - sizeof(struct pt_regs) - sizeof(struct switch_stack) \
80 + offsetof(struct switch_stack, reg))
81
75static int regoff[] = { 82static int regoff[] = {
76 PT_REG( r0), PT_REG( r1), PT_REG( r2), PT_REG( r3), 83 PT_REG( r0), PT_REG( r1), PT_REG( r2), PT_REG( r3),
77 PT_REG( r4), PT_REG( r5), PT_REG( r6), PT_REG( r7), 84 PT_REG( r4), PT_REG( r5), PT_REG( r6), PT_REG( r7),