On Mon, Nov 4, 2019 at 4:08 AM Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > On 01/11/19 21:33, Bill Wendling wrote: > > Some of the code test sequences (e.g. push_es) clobber ES. That causes > > trouble for future rep string instructions. So save and restore ES > > around the test code sequence in exec_in_big_real_mode. > > You mean pop_es. Applied with that change. I think push_es and pop_es are both guilty of clobbering %es: MK_INSN(push_es, "mov $0x231, %bx\n\t" //Just write a dummy value to see if it gets overwritten "mov $0x123, %ax\n\t" "mov %ax, %es\n\t" <======= Here "push %es\n\t" "pop %bx \n\t" ); MK_INSN(pop_es, "push %ax\n\t" "pop %es\n\t" <======== Here "mov %es, %bx\n\t" );