From: Michael Brown Date: Wed, 24 May 2006 12:19:16 +0000 (+0000) Subject: Set carry flag before calling INT 15,e801 and INT 15,e820. X-Git-Tag: fredrik-command-line-merge-1~116 X-Git-Url: http://git.etherboot.org/people/xl0/gpxe.git/commitdiff_plain/53935e9dc6c61a002511f31b3fd536ed2a30dc6b Set carry flag before calling INT 15,e801 and INT 15,e820. Ignore carry flag for INT 15,88; the Ralf Brown interrupt list says that CF is unreliable for this call. --- diff --git a/src/arch/i386/firmware/pcbios/memmap.c b/src/arch/i386/firmware/pcbios/memmap.c index 3e508fb1..a1e69e02 100644 --- a/src/arch/i386/firmware/pcbios/memmap.c +++ b/src/arch/i386/firmware/pcbios/memmap.c @@ -76,6 +76,7 @@ static unsigned int extmemsize_e801 ( void ) { unsigned int extmem; REAL_EXEC ( rm_mem_e801, + "stc\n\t" "int $0x15\n\t" "pushfw\n\t" "popw %w0\n\t", @@ -111,10 +112,8 @@ static unsigned int extmemsize_88 ( void ) { uint16_t extmem; REAL_EXEC ( rm_mem_88, - "int $0x15\n\t" - "jnc 1f\n\t" - "xorw %%ax, %%ax\n\t" - "\n1:\n\t", + /* Ignore CF; it is not reliable for this call */ + "int $0x15\n\t", 1, OUT_CONSTRAINTS ( "=a" ( extmem ) ), IN_CONSTRAINTS ( "a" ( 0x8800 ) ), @@ -155,6 +154,7 @@ static int meme820 ( struct memory_region *memmap, unsigned int entries ) { do { REAL_EXEC ( rm_mem_e820, + "stc\n\t" "int $0x15\n\t" "pushfw\n\t" "popw %w0\n\t",