aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/i386/boot/memory.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/i386/boot/memory.c b/arch/i386/boot/memory.c
index bccaa1cf6645..378353956b5d 100644
--- a/arch/i386/boot/memory.c
+++ b/arch/i386/boot/memory.c
@@ -28,11 +28,14 @@ static int detect_memory_e820(void)
28 28
29 do { 29 do {
30 size = sizeof(struct e820entry); 30 size = sizeof(struct e820entry);
31 id = SMAP; 31
32 /* Important: %edx is clobbered by some BIOSes,
33 so it must be either used for the error output
34 or explicitly marked clobbered. */
32 asm("int $0x15; setc %0" 35 asm("int $0x15; setc %0"
33 : "=am" (err), "+b" (next), "+d" (id), "+c" (size), 36 : "=d" (err), "+b" (next), "=a" (id), "+c" (size),
34 "=m" (*desc) 37 "=m" (*desc)
35 : "D" (desc), "a" (0xe820)); 38 : "D" (desc), "d" (SMAP), "a" (0xe820));
36 39
37 /* Some BIOSes stop returning SMAP in the middle of 40 /* Some BIOSes stop returning SMAP in the middle of
38 the search loop. We don't know exactly how the BIOS 41 the search loop. We don't know exactly how the BIOS