]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/grub-0.97-cmdline-size.patch
Merge branch 'master' into next
[people/pmueller/ipfire-2.x.git] / src / patches / grub-0.97-cmdline-size.patch
1 diff --git a/stage2/boot.c b/stage2/boot.c
2 index bf442e1..a6872e0 100644
3 --- a/stage2/boot.c
4 +++ b/stage2/boot.c
5 @@ -241,6 +241,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type,
6 }
7
8 if (lh->version >= 0x0202)
9 + /* version 0x0202 and higher can handle 4096 */
10 lh->cmd_line_ptr = linux_data_real_addr + LINUX_CL_OFFSET;
11 else
12 {
13 @@ -403,8 +404,10 @@ load_image (char *kernel, char *arg, kernel_t suggested_type,
14 {
15 char *src = skip_to (0, arg);
16 char *dest = linux_data_tmp_addr + LINUX_CL_OFFSET;
17 -
18 - while (dest < linux_data_tmp_addr + LINUX_CL_END_OFFSET && *src)
19 + unsigned long cl_end_offset = lh->version < 0x0202 ?
20 + LINUX_CL_END_OFFSET : LINUX_CL_END_OFFSET_202;
21 +
22 + while (dest < linux_data_tmp_addr + cl_end_offset && *src)
23 *(dest++) = *(src++);
24
25 /* Old Linux kernels have problems determining the amount of
26 diff --git a/stage2/shared.h b/stage2/shared.h
27 index d05644b..c052480 100644
28 --- a/stage2/shared.h
29 +++ b/stage2/shared.h
30 @@ -160,10 +160,13 @@ extern void *grub_scratch_mem;
31 #define LINUX_VID_MODE_ASK 0xFFFD
32
33 #define LINUX_CL_OFFSET 0x9000
34 -#define LINUX_CL_END_OFFSET 0x90FF
35 -#define LINUX_SETUP_MOVE_SIZE 0x9100
36 #define LINUX_CL_MAGIC 0xA33F
37
38 +#define LINUX_CL_END_OFFSET 0x90FF
39 +#define LINUX_CL_END_OFFSET_202 0x9FFF /* version 0x0202 or higher */
40 +#define LINUX_SETUP_MOVE_SIZE 0xA000 /* where am I putting it? */
41 +
42 +
43 /*
44 * General disk stuff
45 */