From: Michael Brown Date: Mon, 9 Jul 2007 18:02:41 +0000 (+0100) Subject: Set CF by default, clear on success (rather than clearing and setting X-Git-Tag: v0.9.3~230 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8bce52d348c5fd740d00ccb826baf0f341e9885e;p=thirdparty%2Fipxe.git Set CF by default, clear on success (rather than clearing and setting on failure). --- diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/i386/interface/pcbios/int13.c index b97d066cb..aeb66adeb 100644 --- a/src/arch/i386/interface/pcbios/int13.c +++ b/src/arch/i386/interface/pcbios/int13.c @@ -409,9 +409,10 @@ static void int13 ( struct i386_all_regs *ix86 ) { /* Negative status indicates an error */ if ( status < 0 ) { - ix86->flags |= CF; status = -status; DBG ( "INT13 failed with status %x\n", status ); + } else { + ix86->flags &= ~CF; } ix86->regs.ah = status; @@ -433,7 +434,8 @@ static void hook_int13 ( void ) { */ __asm__ __volatile__ ( TEXT16_CODE ( "\nint13_wrapper:\n\t" - "orb $0, %%al\n\t" /* clear CF and OF */ + "orb $0, %%al\n\t" /* clear OF */ + "stc\n\t" "pushl %0\n\t" /* call int13() */ "pushw %%cs\n\t" "call prot_call\n\t"