+++ /dev/null
-diff --git a/stage2/boot.c b/stage2/boot.c
-index bf442e1..a6872e0 100644
---- a/stage2/boot.c
-+++ b/stage2/boot.c
-@@ -241,6 +241,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type,
- }
-
- if (lh->version >= 0x0202)
-+ /* version 0x0202 and higher can handle 4096 */
- lh->cmd_line_ptr = linux_data_real_addr + LINUX_CL_OFFSET;
- else
- {
-@@ -403,8 +404,10 @@ load_image (char *kernel, char *arg, kernel_t suggested_type,
- {
- char *src = skip_to (0, arg);
- char *dest = linux_data_tmp_addr + LINUX_CL_OFFSET;
--
-- while (dest < linux_data_tmp_addr + LINUX_CL_END_OFFSET && *src)
-+ unsigned long cl_end_offset = lh->version < 0x0202 ?
-+ LINUX_CL_END_OFFSET : LINUX_CL_END_OFFSET_202;
-+
-+ while (dest < linux_data_tmp_addr + cl_end_offset && *src)
- *(dest++) = *(src++);
-
- /* Old Linux kernels have problems determining the amount of
-diff --git a/stage2/shared.h b/stage2/shared.h
-index d05644b..c052480 100644
---- a/stage2/shared.h
-+++ b/stage2/shared.h
-@@ -160,10 +160,13 @@ extern void *grub_scratch_mem;
- #define LINUX_VID_MODE_ASK 0xFFFD
-
- #define LINUX_CL_OFFSET 0x9000
--#define LINUX_CL_END_OFFSET 0x90FF
--#define LINUX_SETUP_MOVE_SIZE 0x9100
- #define LINUX_CL_MAGIC 0xA33F
-
-+#define LINUX_CL_END_OFFSET 0x90FF
-+#define LINUX_CL_END_OFFSET_202 0x9FFF /* version 0x0202 or higher */
-+#define LINUX_SETUP_MOVE_SIZE 0xA000 /* where am I putting it? */
-+
-+
- /*
- * General disk stuff
- */