From: Jan Beulich Date: Mon, 11 May 2015 08:37:58 +0000 (+0200) Subject: x86: don't clear high 32 bits of RAX on sub-word guest I/O port reads X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3270 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1191aa9d1988c469844eb4545689617a8b13eae1;p=xen.git x86: don't clear high 32 bits of RAX on sub-word guest I/O port reads 1- or 2-byte operations never alter the high halves of registers. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 22cdfc48ae..4b42b2d20a 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -2238,7 +2238,7 @@ static int emulate_privileged_op(struct cpu_user_regs *regs) if ( op_bytes == 4 ) regs->eax = 0; else - regs->eax &= ~((1u << (op_bytes * 8)) - 1); + regs->eax &= ~((1 << (op_bytes * 8)) - 1); regs->eax |= guest_io_read(port, op_bytes, v, regs); } bpmatch = check_guest_io_breakpoint(v, port, op_bytes);