From: Andrew Morton {standard input}:3025: Error: suffix or operands invalid for `movq' {standard input}:3053: Error: suffix or operands invalid for `movq' {standard input}:3081: Error: suffix or operands invalid for `movq' {standard input}:3109: Error: suffix or operands invalid for `movq' hope this is right... btw, all the indenting on all those switch statements is off-by-one. Cc: Roland McGrath Signed-off-by: Andrew Morton --- arch/x86_64/kernel/ptrace.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff -puN arch/x86_64/kernel/ptrace.c~utrace-x86_64-fix arch/x86_64/kernel/ptrace.c --- a/arch/x86_64/kernel/ptrace.c~utrace-x86_64-fix +++ a/arch/x86_64/kernel/ptrace.c @@ -292,29 +292,29 @@ static int putreg(struct task_struct *ch static unsigned long getreg(struct task_struct *child, unsigned long regno) { - unsigned long val; + unsigned int val; switch (regno) { case offsetof(struct user_regs_struct, fs): if (child == current) { - asm("movq %%fs,%0" : "=r" (val)); + asm("movl %%fs,%0" : "=r" (val)); return val; } return child->thread.fsindex; case offsetof(struct user_regs_struct, gs): if (child == current) { - asm("movq %%gs,%0" : "=r" (val)); + asm("movl %%gs,%0" : "=r" (val)); return val; } return child->thread.gsindex; case offsetof(struct user_regs_struct, ds): if (child == current) { - asm("movq %%ds,%0" : "=r" (val)); + asm("movl %%ds,%0" : "=r" (val)); return val; } return child->thread.ds; case offsetof(struct user_regs_struct, es): if (child == current) { - asm("movq %%es,%0" : "=r" (val)); + asm("movl %%es,%0" : "=r" (val)); return val; } return child->thread.es; _