diff options
Diffstat (limited to 'arch/x86/boot')
-rw-r--r-- | arch/x86/boot/compressed/misc.c | 15 | ||||
-rw-r--r-- | arch/x86/boot/mkcpustr.c | 2 | ||||
-rw-r--r-- | arch/x86/boot/video-vga.c | 9 | ||||
-rw-r--r-- | arch/x86/boot/video.c | 7 |
4 files changed, 13 insertions, 20 deletions
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index 3b22fe8ab91b..51e240779a44 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c | |||
@@ -19,11 +19,6 @@ | |||
19 | #define _ASM_X86_DESC_H 1 | 19 | #define _ASM_X86_DESC_H 1 |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | #ifdef CONFIG_X86_64 | ||
23 | #define _LINUX_STRING_H_ 1 | ||
24 | #define __LINUX_BITMAP_H 1 | ||
25 | #endif | ||
26 | |||
27 | #include <linux/linkage.h> | 22 | #include <linux/linkage.h> |
28 | #include <linux/screen_info.h> | 23 | #include <linux/screen_info.h> |
29 | #include <linux/elf.h> | 24 | #include <linux/elf.h> |
@@ -131,8 +126,8 @@ static void error(char *m); | |||
131 | static struct boot_params *real_mode; /* Pointer to real-mode data */ | 126 | static struct boot_params *real_mode; /* Pointer to real-mode data */ |
132 | static int quiet; | 127 | static int quiet; |
133 | 128 | ||
134 | static void *memset(void *s, int c, unsigned n); | 129 | void *memset(void *s, int c, size_t n); |
135 | void *memcpy(void *dest, const void *src, unsigned n); | 130 | void *memcpy(void *dest, const void *src, size_t n); |
136 | 131 | ||
137 | static void __putstr(int, const char *); | 132 | static void __putstr(int, const char *); |
138 | #define putstr(__x) __putstr(0, __x) | 133 | #define putstr(__x) __putstr(0, __x) |
@@ -185,11 +180,9 @@ static void __putstr(int error, const char *s) | |||
185 | return; | 180 | return; |
186 | #endif | 181 | #endif |
187 | 182 | ||
188 | #ifdef CONFIG_X86_32 | ||
189 | if (real_mode->screen_info.orig_video_mode == 0 && | 183 | if (real_mode->screen_info.orig_video_mode == 0 && |
190 | lines == 0 && cols == 0) | 184 | lines == 0 && cols == 0) |
191 | return; | 185 | return; |
192 | #endif | ||
193 | 186 | ||
194 | x = real_mode->screen_info.orig_x; | 187 | x = real_mode->screen_info.orig_x; |
195 | y = real_mode->screen_info.orig_y; | 188 | y = real_mode->screen_info.orig_y; |
@@ -223,7 +216,7 @@ static void __putstr(int error, const char *s) | |||
223 | outb(0xff & (pos >> 1), vidport+1); | 216 | outb(0xff & (pos >> 1), vidport+1); |
224 | } | 217 | } |
225 | 218 | ||
226 | static void *memset(void *s, int c, unsigned n) | 219 | void *memset(void *s, int c, size_t n) |
227 | { | 220 | { |
228 | int i; | 221 | int i; |
229 | char *ss = s; | 222 | char *ss = s; |
@@ -233,7 +226,7 @@ static void *memset(void *s, int c, unsigned n) | |||
233 | return s; | 226 | return s; |
234 | } | 227 | } |
235 | 228 | ||
236 | void *memcpy(void *dest, const void *src, unsigned n) | 229 | void *memcpy(void *dest, const void *src, size_t n) |
237 | { | 230 | { |
238 | int i; | 231 | int i; |
239 | const char *s = src; | 232 | const char *s = src; |
diff --git a/arch/x86/boot/mkcpustr.c b/arch/x86/boot/mkcpustr.c index 8ef60f20b371..919257f526f2 100644 --- a/arch/x86/boot/mkcpustr.c +++ b/arch/x86/boot/mkcpustr.c | |||
@@ -22,7 +22,7 @@ int main(void) | |||
22 | int i, j; | 22 | int i, j; |
23 | const char *str; | 23 | const char *str; |
24 | 24 | ||
25 | printf("static const char x86_cap_strs[] = \n"); | 25 | printf("static const char x86_cap_strs[] =\n"); |
26 | 26 | ||
27 | for (i = 0; i < NCAPINTS; i++) { | 27 | for (i = 0; i < NCAPINTS; i++) { |
28 | for (j = 0; j < 32; j++) { | 28 | for (j = 0; j < 32; j++) { |
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) |