summaryrefslogtreecommitdiffstats
path: root/arch/i386/boot/video.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-18 12:13:02 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-18 12:13:02 -0700
commit97405fe26b2a4df7090884b086ee8224ace2a6d1 (patch)
tree528f9f1f3f8cf0ce933a366f137faaf55ab89079 /arch/i386/boot/video.c
parenta10d9a71bafd3a283da240d2868e71346d2aef6f (diff)
parent3fbc54165d7217abf62b871c0dd074e76ce0eb31 (diff)
downloadlinux-97405fe26b2a4df7090884b086ee8224ace2a6d1.tar.bz2
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup: [PATCH] x86: do not recompile boot for each build [x86 setup] Save/restore DS around invocations of INT 10h [x86 setup] VGA: Clear the Protect bit before setting the vertical height [x86 setup] Fix assembly constraints [x86 setup] build/tools.c: fix comment [x86 setup] MAINTAINERS: document x86 setup code git tree
Diffstat (limited to 'arch/i386/boot/video.c')
-rw-r--r--arch/i386/boot/video.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/i386/boot/video.c b/arch/i386/boot/video.c
index 3bb3573cd6a1..958130ef0042 100644
--- a/arch/i386/boot/video.c
+++ b/arch/i386/boot/video.c
@@ -195,7 +195,7 @@ static void vga_recalc_vertical(void)
{
unsigned int font_size, rows;
u16 crtc;
- u8 ov;
+ u8 pt, ov;
set_fs(0);
font_size = rdfs8(0x485); /* BIOS: font size (pixels) */
@@ -206,7 +206,12 @@ static void vga_recalc_vertical(void)
crtc = vga_crtc();
+ pt = in_idx(crtc, 0x11);
+ pt &= ~0x80; /* Unlock CR0-7 */
+ out_idx(pt, crtc, 0x11);
+
out_idx((u8)rows, crtc, 0x12); /* Lower height register */
+
ov = in_idx(crtc, 0x07); /* Overflow register */
ov &= 0xbd;
ov |= (rows >> (8-1)) & 0x02;
@@ -411,7 +416,7 @@ static void restore_screen(void)
"1: rep;stosl ; "
"popw %%es"
: "+D" (dst), "+c" (npad)
- : "bdSm" (video_segment),
+ : "bdS" (video_segment),
"a" (0x07200720));
}