Commit 42a1c520 authored by Avi Kivity's avatar Avi Kivity
Browse files

KVM: x86 emulator: move group tables to top



No code changes.

Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
parent fd853310
Loading
Loading
Loading
Loading
+38 −38
Original line number Diff line number Diff line
@@ -115,6 +115,44 @@ struct opcode {
#define D(_y) { .flags = (_y) }
#define N    D(0)

static struct opcode group_table[] = {
	[Group1*8] =
	X7(D(Lock)), N,
	[Group1A*8] =
	D(DstMem | SrcNone | ModRM | Mov | Stack), N, N, N, N, N, N, N,
	[Group3*8] =
	D(DstMem | SrcImm | ModRM), D(DstMem | SrcImm | ModRM),
	D(DstMem | SrcNone | ModRM | Lock), D(DstMem | SrcNone | ModRM | Lock),
	X4(D(Undefined)),
	[Group4*8] =
	D(ByteOp | DstMem | SrcNone | ModRM | Lock), D(ByteOp | DstMem | SrcNone | ModRM | Lock),
	N, N, N, N, N, N,
	[Group5*8] =
	D(DstMem | SrcNone | ModRM | Lock), D(DstMem | SrcNone | ModRM | Lock),
	D(SrcMem | ModRM | Stack), N,
	D(SrcMem | ModRM | Stack), D(SrcMemFAddr | ModRM | ImplicitOps),
	D(SrcMem | ModRM | Stack), N,
	[Group7*8] =
	N, N, D(ModRM | SrcMem | Priv), D(ModRM | SrcMem | Priv),
	D(SrcNone | ModRM | DstMem | Mov), N,
	D(SrcMem16 | ModRM | Mov | Priv), D(SrcMem | ModRM | ByteOp | Priv),
	[Group8*8] =
	N, N, N, N,
	D(DstMem | SrcImmByte | ModRM), D(DstMem | SrcImmByte | ModRM | Lock),
	D(DstMem | SrcImmByte | ModRM | Lock), D(DstMem | SrcImmByte | ModRM | Lock),
	[Group9*8] =
	N, D(DstMem64 | ModRM | Lock), N, N, N, N, N, N,
};

static struct opcode group2_table[] = {
	[Group7*8] =
	D(SrcNone | ModRM | Priv), N, N, D(SrcNone | ModRM | Priv),
	D(SrcNone | ModRM | DstMem | Mov), N,
	D(SrcMem16 | ModRM | Mov | Priv), N,
	[Group9*8] =
	N, N, N, N, N, N, N, N,
};

static struct opcode opcode_table[256] = {
	/* 0x00 - 0x07 */
	D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock),
@@ -291,44 +329,6 @@ static struct opcode twobyte_table[256] = {
	N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N
};

static struct opcode group_table[] = {
	[Group1*8] =
	X7(D(Lock)), N,
	[Group1A*8] =
	D(DstMem | SrcNone | ModRM | Mov | Stack), N, N, N, N, N, N, N,
	[Group3*8] =
	D(DstMem | SrcImm | ModRM), D(DstMem | SrcImm | ModRM),
	D(DstMem | SrcNone | ModRM | Lock), D(DstMem | SrcNone | ModRM | Lock),
	X4(D(Undefined)),
	[Group4*8] =
	D(ByteOp | DstMem | SrcNone | ModRM | Lock), D(ByteOp | DstMem | SrcNone | ModRM | Lock),
	N, N, N, N, N, N,
	[Group5*8] =
	D(DstMem | SrcNone | ModRM | Lock), D(DstMem | SrcNone | ModRM | Lock),
	D(SrcMem | ModRM | Stack), N,
	D(SrcMem | ModRM | Stack), D(SrcMemFAddr | ModRM | ImplicitOps),
	D(SrcMem | ModRM | Stack), N,
	[Group7*8] =
	N, N, D(ModRM | SrcMem | Priv), D(ModRM | SrcMem | Priv),
	D(SrcNone | ModRM | DstMem | Mov), N,
	D(SrcMem16 | ModRM | Mov | Priv), D(SrcMem | ModRM | ByteOp | Priv),
	[Group8*8] =
	N, N, N, N,
	D(DstMem | SrcImmByte | ModRM), D(DstMem | SrcImmByte | ModRM | Lock),
	D(DstMem | SrcImmByte | ModRM | Lock), D(DstMem | SrcImmByte | ModRM | Lock),
	[Group9*8] =
	N, D(DstMem64 | ModRM | Lock), N, N, N, N, N, N,
};

static struct opcode group2_table[] = {
	[Group7*8] =
	D(SrcNone | ModRM | Priv), N, N, D(SrcNone | ModRM | Priv),
	D(SrcNone | ModRM | DstMem | Mov), N,
	D(SrcMem16 | ModRM | Mov | Priv), N,
	[Group9*8] =
	N, N, N, N, N, N, N, N,
};

#undef D
#undef N