[x86 setup] Make sure AH=00h when setting a video mode
authorH. Peter Anvin <hpa@zytor.com>
Thu, 23 Aug 2007 16:28:42 +0000 (09:28 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 23 Aug 2007 20:03:25 +0000 (13:03 -0700)
Passing a u8 into a register doesn't mean gcc will zero-extend it.
Also, don't depend on thhe register not to change.

Per bug report from Saul Tamari.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/i386/boot/video-vga.c

index d660e60..aef02f9 100644 (file)
@@ -73,9 +73,10 @@ static u8 vga_set_basic_mode(void)
                mode = 3;
 
        /* Set the mode */
+       ax = mode;
        asm volatile(INT10
-                    : : "a" (mode)
-                    : "ebx", "ecx", "edx", "esi", "edi");
+                    : "+a" (ax)
+                    : "ebx", "ecx", "edx", "esi", "edi");
        do_restore = 1;
        return mode;
 }