summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2007-07-23 15:37:14 -0700
committerH. Peter Anvin <hpa@zytor.com>2007-07-25 12:02:21 -0700
commit1a13286b104faeeb4f4bc3bfbf4d4fcdcd2569ed (patch)
tree37fef9c9676b5efe90773a8b7ba4832ae492f6ef /arch
parent1514ab09edb071345fe17cd230c97f9e72c9478e (diff)
downloadlinux-0-day-1a13286b104faeeb4f4bc3bfbf4d4fcdcd2569ed.tar.gz
linux-0-day-1a13286b104faeeb4f4bc3bfbf4d4fcdcd2569ed.tar.xz
[x86 setup] APM: BX should be zero when disconnecting
For APM calls, BX contains the device index, which is zero for the system BIOS. Disconnect requres BX = 0. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/boot/apm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/i386/boot/apm.c b/arch/i386/boot/apm.c
index 8be3f5686af6c..eab50c55a3a56 100644
--- a/arch/i386/boot/apm.c
+++ b/arch/i386/boot/apm.c
@@ -45,9 +45,10 @@ int query_apm_bios(void)
/* Disconnect first, just in case */
ax = 0x5304;
+ bx = 0;
asm volatile("pushl %%ebp ; int $0x15 ; popl %%ebp"
- : "+a" (ax)
- : : "ebx", "ecx", "edx", "esi", "edi");
+ : "+a" (ax), "+b" (bx)
+ : : "ecx", "edx", "esi", "edi");
/* Paranoia */
ebx = esi = 0;