From 8bce52d348c5fd740d00ccb826baf0f341e9885e Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 9 Jul 2007 19:02:41 +0100 Subject: [PATCH] Set CF by default, clear on success (rather than clearing and setting on failure). --- src/arch/i386/interface/pcbios/int13.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/i386/interface/pcbios/int13.c index b97d066c..aeb66ade 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"