Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc71d0f1 authored by Avi Kivity's avatar Avi Kivity
Browse files

KVM: x86 emulator: simplify sib decoding



Instead of using sparse switches, use simpler if/else sequences.

Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
parent 8684c0af
Loading
Loading
Loading
Loading
+4 −16
Original line number Diff line number Diff line
@@ -748,24 +748,12 @@ static int decode_modrm(struct x86_emulate_ctxt *ctxt,
			base_reg |= sib & 7;
			scale = sib >> 6;

			switch (base_reg) {
			case 5:
			case 13:
				if (c->modrm_mod != 0)
					c->modrm_ea += c->regs[base_reg];
			if ((base_reg & 7) == 5 && c->modrm_mod == 0)
				c->modrm_ea += insn_fetch(s32, 4, c->eip);
			else
					c->modrm_ea +=
						insn_fetch(s32, 4, c->eip);
				break;
			default:
				c->modrm_ea += c->regs[base_reg];
			}
			switch (index_reg) {
			case 4:
				break;
			default:
			if (index_reg != 4)
				c->modrm_ea += c->regs[index_reg] << scale;
			}
			break;
		case 5:
		case 13: