--- /home/jbeulich/src/xen/2006-05-19/xen/arch/x86/traps.c 2006-05-24 12:08:44.000000000 +0200 +++ 2006-05-19/xen/arch/x86/traps.c 2006-05-24 17:59:20.000000000 +0200 @@ -876,7 +876,7 @@ static int emulate_privileged_op(struct PAGE_FAULT(regs->edi, USER_WRITE_FAULT); break; } - regs->edi += (regs->eflags & EF_DF) ? -op_bytes : op_bytes; + regs->edi += (regs->eflags & EF_DF) ? -(long)op_bytes : op_bytes; break; case 0x6e: /* OUTSB */ @@ -902,7 +902,7 @@ static int emulate_privileged_op(struct outl_user((u32)data, (u16)regs->edx, v, regs); break; } - regs->esi += (regs->eflags & EF_DF) ? -op_bytes : op_bytes; + regs->esi += (regs->eflags & EF_DF) ? -(long)op_bytes : op_bytes; break; }