diff options
author | Michael Brown <mcb30@etherboot.org> | 2006-05-24 12:19:16 +0000 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2006-05-24 12:19:16 +0000 |
commit | 53935e9dc6c61a002511f31b3fd536ed2a30dc6b (patch) | |
tree | 0e1c329a022cc152741111fc385a8ee573a55a58 /src/arch/i386/firmware | |
parent | 7a53d070274c847e708673ab504d4a779f611873 (diff) | |
download | ipxe-53935e9dc6c61a002511f31b3fd536ed2a30dc6b.tar.gz |
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.
Diffstat (limited to 'src/arch/i386/firmware')
-rw-r--r-- | src/arch/i386/firmware/pcbios/memmap.c | 8 |
1 files changed, 4 insertions, 4 deletions
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", |