[x86 setup] APM: BX should be zero when disconnecting
authorH. Peter Anvin <hpa@zytor.com>
Mon, 23 Jul 2007 22:37:14 +0000 (15:37 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 25 Jul 2007 19:02:21 +0000 (12:02 -0700)
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>
arch/i386/boot/apm.c

index 8be3f56..eab50c5 100644 (file)
@@ -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;