From: Jeff Dike Replace FRAME_SIZE_OFFSET with MAX_REG_OFFSET because different arches have Signed-off-by: Jeff Dike Signed-off-by: Andrew Morton --- 25-akpm/arch/um/include/sysdep-i386/ptrace_user.h | 3 +++ 25-akpm/arch/um/kernel/ptrace.c | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff -puN arch/um/include/sysdep-i386/ptrace_user.h~uml-provide-an-arch-specific-define-for-register-file-size arch/um/include/sysdep-i386/ptrace_user.h --- 25/arch/um/include/sysdep-i386/ptrace_user.h~uml-provide-an-arch-specific-define-for-register-file-size 2005-01-16 23:25:00.869762184 -0800 +++ 25-akpm/arch/um/include/sysdep-i386/ptrace_user.h 2005-01-16 23:25:00.876761120 -0800 @@ -33,6 +33,9 @@ #define FP_FRAME_SIZE (27) #define FPX_FRAME_SIZE (128) +#define MAX_REG_OFFSET (FRAME_SIZE_OFFSET) +#define MAX_REG_NR (FRAME_SIZE) + #ifdef PTRACE_GETREGS #define UM_HAVE_GETREGS #endif diff -puN arch/um/kernel/ptrace.c~uml-provide-an-arch-specific-define-for-register-file-size arch/um/kernel/ptrace.c --- 25/arch/um/kernel/ptrace.c~uml-provide-an-arch-specific-define-for-register-file-size 2005-01-16 23:25:00.871761880 -0800 +++ 25-akpm/arch/um/kernel/ptrace.c 2005-01-16 23:25:00.877760968 -0800 @@ -94,7 +94,7 @@ long sys_ptrace(long request, long pid, break; tmp = 0; /* Default return condition */ - if(addr < FRAME_SIZE_OFFSET){ + if(addr < MAX_REG_OFFSET){ tmp = getreg(child, addr); } else if((addr >= offsetof(struct user, u_debugreg[0])) && @@ -122,10 +122,11 @@ long sys_ptrace(long request, long pid, if ((addr & 3) || addr < 0) break; - if (addr < FRAME_SIZE_OFFSET) { + if (addr < MAX_REG_OFFSET) { ret = putreg(child, addr, data); break; } +#if 0 /* XXX x86_64 */ else if((addr >= offsetof(struct user, u_debugreg[0])) && (addr <= offsetof(struct user, u_debugreg[7]))){ addr -= offsetof(struct user, u_debugreg[0]); @@ -134,6 +135,7 @@ long sys_ptrace(long request, long pid, child->thread.arch.debugregs[addr] = data; ret = 0; } +#endif break; @@ -196,11 +198,11 @@ long sys_ptrace(long request, long pid, #ifdef PTRACE_GETREGS case PTRACE_GETREGS: { /* Get all gp regs from the child. */ if (!access_ok(VERIFY_WRITE, (unsigned long *)data, - FRAME_SIZE_OFFSET)) { + MAX_REG_OFFSET)) { ret = -EIO; break; } - for ( i = 0; i < FRAME_SIZE_OFFSET; i += sizeof(long) ) { + for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) { __put_user(getreg(child, i), (unsigned long __user *) data); data += sizeof(long); @@ -213,11 +215,11 @@ long sys_ptrace(long request, long pid, case PTRACE_SETREGS: { /* Set all gp regs in the child. */ unsigned long tmp = 0; if (!access_ok(VERIFY_READ, (unsigned *)data, - FRAME_SIZE_OFFSET)) { + MAX_REG_OFFSET)) { ret = -EIO; break; } - for ( i = 0; i < FRAME_SIZE_OFFSET; i += sizeof(long) ) { + for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) { __get_user(tmp, (unsigned long __user *) data); putreg(child, i, tmp); data += sizeof(long); _