diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/kernel/process.c | 19 | ||||
-rw-r--r-- | arch/alpha/kernel/ptrace.c | 7 |
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) | |||
428 | int | 428 | int |
429 | dump_elf_task(elf_greg_t *dest, struct task_struct *task) | 429 | dump_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 | ||
442 | int | 435 | int |
443 | dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task) | 436 | dump_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 | |||
75 | static int regoff[] = { | 82 | static 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), |