diff options
author | H. Peter Anvin <hpa@zytor.com> | 2007-08-23 12:28:42 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2007-08-23 16:03:25 -0400 |
commit | 71351b98b9be6a867aa00276d67716c0728cfff7 (patch) | |
tree | 9ab25a995c333d21274403ca7302449d51544b26 /arch | |
parent | b015124e562a040f7faf361c72e8f5f457ac6cf5 (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.c | 5 |
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 | } |