aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/boot/video.c
diff options
context:
space:
mode:
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