x86emul: fold SrcImmByte fetching There's no need for having identical code spelled out twice. Signed-off-by: Jan Beulich --- v2: Add braces (with quite a bit of reluctance). --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -1979,9 +1979,14 @@ x86_emulate( goto done; break; case SrcImm: + if ( !(d & ByteOp) ) + src.bytes = op_bytes != 8 ? op_bytes : 4; + else + { + case SrcImmByte: + src.bytes = 1; + } src.type = OP_IMM; - src.bytes = (d & ByteOp) ? 1 : op_bytes; - if ( src.bytes == 8 ) src.bytes = 4; /* NB. Immediates are sign-extended as necessary. */ switch ( src.bytes ) { @@ -1990,11 +1995,6 @@ x86_emulate( case 4: src.val = insn_fetch_type(int32_t); break; } break; - case SrcImmByte: - src.type = OP_IMM; - src.bytes = 1; - src.val = insn_fetch_type(int8_t); - break; } /* Decode and fetch the destination operand: register or memory. */