aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/boot/video.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-18 15:13:02 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-18 15:13:02 -0400
commit97405fe26b2a4df7090884b086ee8224ace2a6d1 (patch)
tree528f9f1f3f8cf0ce933a366f137faaf55ab89079 /arch/i386/boot/video.c
parenta10d9a71bafd3a283da240d2868e71346d2aef6f (diff)
parent3fbc54165d7217abf62b871c0dd074e76ce0eb31 (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.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)
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