aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-09-28 14:24:20 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-09-28 14:24:20 -0400
commitae000eec2c6aa785e1a85bea6e2f612fb826859a (patch)
tree14ffaa202799aa1e2381a05f600c702a3c19f76b /arch
parentcdfef17d93b35a6d583509945e699ee998abce24 (diff)
parent4ee5b10abeb2b5581be10d3022694cd19084e9b0 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup: [x86 setup] Correct the SMAP check for INT 0x15, AX=0xe820
Diffstat (limited to 'arch')
-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