clear CF on entry to BIOS handlers
This simplifies the success case, which never has to manipulate
the carry flag.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/code16.c b/code16.c
index cfcf50a..2fd7ef9 100644
--- a/code16.c
+++ b/code16.c
@@ -69,9 +69,6 @@
regs->ecx = sizeof(struct e820entry);
regs->ebx = ++ndx;
- /* Clear CF to indicate success. */
- regs->eflags &= ~X86_EFLAGS_CF;
-
if (ndx >= map_size)
regs->ebx = 0; /* end of map */
}
diff --git a/entry.S b/entry.S
index 9a9454a..ecd5fae 100644
--- a/entry.S
+++ b/entry.S
@@ -58,7 +58,7 @@
* interrupt handler succeeded and then treat the return values in
* registers as valid data.
*/
- orl $X86_EFLAGS_CF, 0x4(%esp)
+ orb $X86_EFLAGS_CF, 0x4(%esp)
IRET
ENTRY_END(bios_intfake)
@@ -67,6 +67,7 @@
* int 10 - video - service
*/
ENTRY(bios_int10)
+ andb $~X86_EFLAGS_CF, 0x4(%esp)
SAVE_BIOSREGS
movl %esp, %eax
@@ -76,13 +77,11 @@
RESTORE_BIOSREGS
- /* Clear CF to indicate success. */
- andl $~X86_EFLAGS_CF, 0x4(%esp)
-
IRET
ENTRY_END(bios_int10)
ENTRY(bios_int15)
+ andb $~X86_EFLAGS_CF, 0x4(%esp)
SAVE_BIOSREGS
movl %esp, %eax