[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Cast to a signed type before negating if we really want the result to be negative.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 05782730877b4e8e85261aff9540b1b2597ffc86 # Parent d82a4c4d04d4757e7caa37cc2890f335bd8b4c5b Cast to a signed type before negating if we really want the result to be negative. From: Jan Beulich <jbeulich@xxxxxxxxxx> Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> xen-unstable changeset: 10171:2dc7c271270055b8df6b063141a05dc0c92298b2 xen-unstable date: Fri May 26 13:49:29 2006 +0100 --- xen/arch/x86/traps.c | 4 ++-- xen/arch/x86/x86_emulate.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff -r d82a4c4d04d4 -r 05782730877b xen/arch/x86/traps.c --- a/xen/arch/x86/traps.c Fri May 26 09:23:33 2006 +0100 +++ b/xen/arch/x86/traps.c Fri May 26 13:55:03 2006 +0100 @@ -873,7 +873,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) ? -(int)op_bytes : op_bytes; break; case 0x6e: /* OUTSB */ @@ -899,7 +899,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) ? -(int)op_bytes : op_bytes; break; } diff -r d82a4c4d04d4 -r 05782730877b xen/arch/x86/x86_emulate.c --- a/xen/arch/x86/x86_emulate.c Fri May 26 09:23:33 2006 +0100 +++ b/xen/arch/x86/x86_emulate.c Fri May 26 13:55:03 2006 +0100 @@ -857,7 +857,7 @@ x86_emulate_memop( &dst.val, 8)) != 0 ) goto done; } - register_address_increment(_regs.esp, -dst.bytes); + register_address_increment(_regs.esp, -(int)dst.bytes); if ( (rc = ops->write_std(register_address(_regs.ss, _regs.esp), dst.val, dst.bytes)) != 0 ) goto done; @@ -939,9 +939,9 @@ x86_emulate_memop( goto done; } register_address_increment( - _regs.esi, (_regs.eflags & EFLG_DF) ? -dst.bytes : dst.bytes); + _regs.esi, (_regs.eflags & EFLG_DF) ? -(int)dst.bytes : dst.bytes); register_address_increment( - _regs.edi, (_regs.eflags & EFLG_DF) ? -dst.bytes : dst.bytes); + _regs.edi, (_regs.eflags & EFLG_DF) ? -(int)dst.bytes : dst.bytes); break; case 0xa6 ... 0xa7: /* cmps */ DPRINTF("Urk! I don't handle CMPS.\n"); @@ -952,7 +952,7 @@ x86_emulate_memop( dst.ptr = (unsigned long *)cr2; dst.val = _regs.eax; register_address_increment( - _regs.edi, (_regs.eflags & EFLG_DF) ? -dst.bytes : dst.bytes); + _regs.edi, (_regs.eflags & EFLG_DF) ? -(int)dst.bytes : dst.bytes); break; case 0xac ... 0xad: /* lods */ dst.type = OP_REG; @@ -961,7 +961,7 @@ x86_emulate_memop( if ( (rc = ops->read_emulated(cr2, &dst.val, dst.bytes)) != 0 ) goto done; register_address_increment( - _regs.esi, (_regs.eflags & EFLG_DF) ? -dst.bytes : dst.bytes); + _regs.esi, (_regs.eflags & EFLG_DF) ? -(int)dst.bytes : dst.bytes); break; case 0xae ... 0xaf: /* scas */ DPRINTF("Urk! I don't handle SCAS.\n"); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |