aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2007-08-23 12:28:42 -0400
committerH. Peter Anvin <hpa@zytor.com>2007-08-23 16:03:25 -0400
commit71351b98b9be6a867aa00276d67716c0728cfff7 (patch)
tree9ab25a995c333d21274403ca7302449d51544b26 /arch
parentb015124e562a040f7faf361c72e8f5f457ac6cf5 (diff)
[x86 setup] Make sure AH=00h when setting a video mode
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/boot/video-vga.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/i386/boot/video-vga.c b/arch/i386/boot/video-vga.c
index d660e608cd58..aef02f9ec0c1 100644
--- a/arch/i386/boot/video-vga.c
+++ b/arch/i386/boot/video-vga.c
@@ -73,9 +73,10 @@ static u8 vga_set_basic_mode(void)
73 mode = 3; 73 mode = 3;
74 74
75 /* Set the mode */ 75 /* Set the mode */
76 ax = mode;
76 asm volatile(INT10 77 asm volatile(INT10
77 : : "a" (mode) 78 : "+a" (ax)
78 : "ebx", "ecx", "edx", "esi", "edi"); 79 : : "ebx", "ecx", "edx", "esi", "edi");
79 do_restore = 1; 80 do_restore = 1;
80 return mode; 81 return mode;
81} 82}