aboutsummaryrefslogtreecommitdiffstats
path: root/src/arch/i386/firmware
diff options
context:
space:
mode:
authorMichael Brown <mcb30@etherboot.org>2006-05-24 12:19:16 +0000
committerMichael Brown <mcb30@etherboot.org>2006-05-24 12:19:16 +0000
commit53935e9dc6c61a002511f31b3fd536ed2a30dc6b (patch)
tree0e1c329a022cc152741111fc385a8ee573a55a58 /src/arch/i386/firmware
parent7a53d070274c847e708673ab504d4a779f611873 (diff)
downloadipxe-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.c8
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",