diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2019-07-24 10:05:06 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2019-07-24 10:21:46 +0200 |
commit | c476b5c67199b44523084b7639a4ff52f437156b (patch) | |
tree | d7dcf0422e39bd4f0d15b2c11d4155f677e2ce9a | |
parent | 35e3627d3a252b3b5ff57439f27f3d86a3741c67 (diff) | |
download | qboot-c476b5c67199b44523084b7639a4ff52f437156b.zip qboot-c476b5c67199b44523084b7639a4ff52f437156b.tar.gz qboot-c476b5c67199b44523084b7639a4ff52f437156b.tar.bz2 |
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>
-rw-r--r-- | code16.c | 3 | ||||
-rw-r--r-- | entry.S | 7 |
2 files changed, 3 insertions, 7 deletions
@@ -69,9 +69,6 @@ bioscall void e820_query_map(struct biosregs *regs) 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 */ } @@ -58,7 +58,7 @@ ENTRY(bios_intfake) * 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 @@ ENTRY_END(bios_intfake) * int 10 - video - service */ ENTRY(bios_int10) + andb $~X86_EFLAGS_CF, 0x4(%esp) SAVE_BIOSREGS movl %esp, %eax @@ -76,13 +77,11 @@ ENTRY(bios_int10) 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 |