REPE tests ZF after the string instruction is executed. Try it with ZF initially clear to make sure. Signed-off-by: Avi Kivity <avi@xxxxxxxxxx> --- x86/emulator.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/x86/emulator.c b/x86/emulator.c index 04adce7..d30ca8e 100644 --- a/x86/emulator.c +++ b/x86/emulator.c @@ -53,6 +53,13 @@ void test_cmps_one(unsigned char *m1, unsigned char *m3) : : "cc"); report("repe/cmpsb (1)", rcx == 0 && rsi == m1 + 30 && rdi == m3 + 30); + rsi = m1; rdi = m3; rcx = 30; + asm volatile("or $1, %[tmp]\n\t" // clear ZF + "repe/cmpsb" + : "+S"(rsi), "+D"(rdi), "+c"(rcx), [tmp]"=&r"(tmp) + : : "cc"); + report("repe/cmpsb (1.zf)", rcx == 0 && rsi == m1 + 30 && rdi == m3 + 30); + rsi = m1; rdi = m3; rcx = 15; asm volatile("xor %[tmp], %[tmp] \n\t" "repe/cmpsw" -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html