diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-18 15:13:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-18 15:13:02 -0400 |
commit | 97405fe26b2a4df7090884b086ee8224ace2a6d1 (patch) | |
tree | 528f9f1f3f8cf0ce933a366f137faaf55ab89079 /arch/i386/boot/video.c | |
parent | a10d9a71bafd3a283da240d2868e71346d2aef6f (diff) | |
parent | 3fbc54165d7217abf62b871c0dd074e76ce0eb31 (diff) |
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.c | 9 |
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) | |||
195 | { | 195 | { |
196 | unsigned int font_size, rows; | 196 | unsigned int font_size, rows; |
197 | u16 crtc; | 197 | u16 crtc; |
198 | u8 ov; | 198 | u8 pt, ov; |
199 | 199 | ||
200 | set_fs(0); | 200 | set_fs(0); |
201 | font_size = rdfs8(0x485); /* BIOS: font size (pixels) */ | 201 | font_size = rdfs8(0x485); /* BIOS: font size (pixels) */ |
@@ -206,7 +206,12 @@ static void vga_recalc_vertical(void) | |||
206 | 206 | ||
207 | crtc = vga_crtc(); | 207 | crtc = vga_crtc(); |
208 | 208 | ||
209 | pt = in_idx(crtc, 0x11); | ||
210 | pt &= ~0x80; /* Unlock CR0-7 */ | ||
211 | out_idx(pt, crtc, 0x11); | ||
212 | |||
209 | out_idx((u8)rows, crtc, 0x12); /* Lower height register */ | 213 | out_idx((u8)rows, crtc, 0x12); /* Lower height register */ |
214 | |||
210 | ov = in_idx(crtc, 0x07); /* Overflow register */ | 215 | ov = in_idx(crtc, 0x07); /* Overflow register */ |
211 | ov &= 0xbd; | 216 | ov &= 0xbd; |
212 | ov |= (rows >> (8-1)) & 0x02; | 217 | ov |= (rows >> (8-1)) & 0x02; |
@@ -411,7 +416,7 @@ static void restore_screen(void) | |||
411 | "1: rep;stosl ; " | 416 | "1: rep;stosl ; " |
412 | "popw %%es" | 417 | "popw %%es" |
413 | : "+D" (dst), "+c" (npad) | 418 | : "+D" (dst), "+c" (npad) |
414 | : "bdSm" (video_segment), | 419 | : "bdS" (video_segment), |
415 | "a" (0x07200720)); | 420 | "a" (0x07200720)); |
416 | } | 421 | } |
417 | 422 | ||