mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
x86emul/test: drop an undue conditional
Gating the main part of what do_test() does is wrong: As it stands, the
"memory" forms of BNDC{L,N,U} weren't tested because of this mistake.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
1ceabff115
commit
00e074834e
1 file changed
+27
-32
@@ -2213,42 +2213,37 @@ void do_test(uint8_t *instr, unsigned int len, unsigned int modrm,
|
||||
unsigned int bytes,
|
||||
struct x86_emulate_ctxt *ctxt))
|
||||
{
|
||||
struct x86_emulate_state *s;
|
||||
struct x86_emulate_state *s = x86_decode_insn(ctxt, fetch);
|
||||
|
||||
if ( !modrm || mem != mem_none )
|
||||
if ( !s )
|
||||
{
|
||||
s = x86_decode_insn(ctxt, fetch);
|
||||
|
||||
if ( !s )
|
||||
{
|
||||
print_insn(instr, len);
|
||||
printf(" failed to decode\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if ( x86_insn_length(s, ctxt) != len )
|
||||
{
|
||||
print_insn(instr, len);
|
||||
printf(" length %u (expected %u)\n", x86_insn_length(s, ctxt), len);
|
||||
}
|
||||
|
||||
if ( x86_insn_is_mem_access(s, ctxt) != (mem != mem_none) )
|
||||
{
|
||||
print_insn(instr, len);
|
||||
printf(" mem access %d (expected %d)\n",
|
||||
x86_insn_is_mem_access(s, ctxt), mem != mem_none);
|
||||
}
|
||||
|
||||
if ( x86_insn_is_mem_write(s, ctxt) != (mem == mem_write) )
|
||||
{
|
||||
print_insn(instr, len);
|
||||
printf(" mem write %d (expected %d)\n",
|
||||
x86_insn_is_mem_write(s, ctxt), mem == mem_write);
|
||||
}
|
||||
|
||||
x86_emulate_free_state(s);
|
||||
print_insn(instr, len);
|
||||
printf(" failed to decode\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if ( x86_insn_length(s, ctxt) != len )
|
||||
{
|
||||
print_insn(instr, len);
|
||||
printf(" length %u (expected %u)\n", x86_insn_length(s, ctxt), len);
|
||||
}
|
||||
|
||||
if ( x86_insn_is_mem_access(s, ctxt) != (mem != mem_none) )
|
||||
{
|
||||
print_insn(instr, len);
|
||||
printf(" mem access %d (expected %d)\n",
|
||||
x86_insn_is_mem_access(s, ctxt), mem != mem_none);
|
||||
}
|
||||
|
||||
if ( x86_insn_is_mem_write(s, ctxt) != (mem == mem_write) )
|
||||
{
|
||||
print_insn(instr, len);
|
||||
printf(" mem write %d (expected %d)\n",
|
||||
x86_insn_is_mem_write(s, ctxt), mem == mem_write);
|
||||
}
|
||||
|
||||
x86_emulate_free_state(s);
|
||||
|
||||
if ( modrm )
|
||||
{
|
||||
instr[modrm] |= 0xc0;
|
||||
|
||||