diff options
| -rw-r--r-- | arch/x86/boot/compressed/misc.c | 2 | ||||
| -rw-r--r-- | arch/x86/boot/video-vga.c | 9 | ||||
| -rw-r--r-- | arch/x86/boot/video.c | 7 |
3 files changed, 8 insertions, 10 deletions
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index 88042e812d3c..51e240779a44 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c | |||
| @@ -180,11 +180,9 @@ static void __putstr(int error, const char *s) | |||
| 180 | return; | 180 | return; |
| 181 | #endif | 181 | #endif |
| 182 | 182 | ||
| 183 | #ifdef CONFIG_X86_32 | ||
| 184 | if (real_mode->screen_info.orig_video_mode == 0 && | 183 | if (real_mode->screen_info.orig_video_mode == 0 && |
| 185 | lines == 0 && cols == 0) | 184 | lines == 0 && cols == 0) |
| 186 | return; | 185 | return; |
| 187 | #endif | ||
| 188 | 186 | ||
| 189 | x = real_mode->screen_info.orig_x; | 187 | x = real_mode->screen_info.orig_x; |
| 190 | y = real_mode->screen_info.orig_y; | 188 | y = real_mode->screen_info.orig_y; |
diff --git a/arch/x86/boot/video-vga.c b/arch/x86/boot/video-vga.c index 819caa1f2008..ed7aeff786b2 100644 --- a/arch/x86/boot/video-vga.c +++ b/arch/x86/boot/video-vga.c | |||
| @@ -42,22 +42,15 @@ static u8 vga_set_basic_mode(void) | |||
| 42 | { | 42 | { |
| 43 | struct biosregs ireg, oreg; | 43 | struct biosregs ireg, oreg; |
| 44 | u16 ax; | 44 | u16 ax; |
| 45 | u8 rows; | ||
| 46 | u8 mode; | 45 | u8 mode; |
| 47 | 46 | ||
| 48 | initregs(&ireg); | 47 | initregs(&ireg); |
| 49 | 48 | ||
| 49 | /* Query current mode */ | ||
| 50 | ax = 0x0f00; | 50 | ax = 0x0f00; |
| 51 | intcall(0x10, &ireg, &oreg); | 51 | intcall(0x10, &ireg, &oreg); |
| 52 | mode = oreg.al; | 52 | mode = oreg.al; |
| 53 | 53 | ||
| 54 | set_fs(0); | ||
| 55 | rows = rdfs8(0x484); /* rows minus one */ | ||
| 56 | |||
| 57 | if ((oreg.ax == 0x5003 || oreg.ax == 0x5007) && | ||
| 58 | (rows == 0 || rows == 24)) | ||
| 59 | return mode; | ||
| 60 | |||
| 61 | if (mode != 3 && mode != 7) | 54 | if (mode != 3 && mode != 7) |
| 62 | mode = 3; | 55 | mode = 3; |
| 63 | 56 | ||
diff --git a/arch/x86/boot/video.c b/arch/x86/boot/video.c index f767164cd5df..43eda284d27f 100644 --- a/arch/x86/boot/video.c +++ b/arch/x86/boot/video.c | |||
| @@ -298,11 +298,18 @@ static void restore_screen(void) | |||
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | /* Restore cursor position */ | 300 | /* Restore cursor position */ |
| 301 | if (saved.curx >= xs) | ||
| 302 | saved.curx = xs-1; | ||
| 303 | if (saved.cury >= ys) | ||
| 304 | saved.cury = ys-1; | ||
| 305 | |||
| 301 | initregs(&ireg); | 306 | initregs(&ireg); |
| 302 | ireg.ah = 0x02; /* Set cursor position */ | 307 | ireg.ah = 0x02; /* Set cursor position */ |
| 303 | ireg.dh = saved.cury; | 308 | ireg.dh = saved.cury; |
| 304 | ireg.dl = saved.curx; | 309 | ireg.dl = saved.curx; |
| 305 | intcall(0x10, &ireg, NULL); | 310 | intcall(0x10, &ireg, NULL); |
| 311 | |||
| 312 | store_cursor_position(); | ||
| 306 | } | 313 | } |
| 307 | 314 | ||
| 308 | void set_video(void) | 315 | void set_video(void) |
