[syslinux:firmware] load_linux: extract the logic for cmdline_offset

syslinux-bot for Matt Fleming matt.fleming at intel.com
Fri Jul 26 01:27:08 PDT 2013


Commit-ID:  16ddfa5eea9f27885c0de8540cb0035989fce2bd
Gitweb:     http://www.syslinux.org/commit/16ddfa5eea9f27885c0de8540cb0035989fce2bd
Author:     Matt Fleming <matt.fleming at intel.com>
AuthorDate: Thu, 25 Jul 2013 16:46:53 +0100
Committer:  Matt Fleming <matt.fleming at intel.com>
CommitDate: Thu, 25 Jul 2013 22:23:26 +0100

load_linux: extract the logic for cmdline_offset

There's bits of historical baggage surrounding these values. Pull the
calculation out into a separate function for clarity.

Signed-off-by: Matt Fleming <matt.fleming at intel.com>

---
 com32/lib/syslinux/load_linux.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/com32/lib/syslinux/load_linux.c b/com32/lib/syslinux/load_linux.c
index 3e659c1..851d467 100644
--- a/com32/lib/syslinux/load_linux.c
+++ b/com32/lib/syslinux/load_linux.c
@@ -124,6 +124,15 @@ static int map_initramfs(struct syslinux_movelist **fraglist,
     return 0;
 }
 
+static size_t calc_cmdline_offset(struct linux_header *hdr,
+				  size_t cmdline_size)
+{
+    if (hdr->version < 0x0202 || !(hdr->loadflags & 0x01))
+	return (0x9ff0 - cmdline_size) & ~15;
+
+    return 0x10000;
+}
+
 int bios_boot_linux(void *kernel_buf, size_t kernel_size,
 		    struct initramfs *initramfs,
 		    struct setup_data *setup_data,
@@ -212,10 +221,7 @@ int bios_boot_linux(void *kernel_buf, size_t kernel_size,
 	cmdline[cmdline_size - 1] = '\0';
     }
 
-    if (hdr.version < 0x0202 || !(hdr.loadflags & 0x01))
-	cmdline_offset = (0x9ff0 - cmdline_size) & ~15;
-    else
-	cmdline_offset = 0x10000;
+    cmdline_offset = calc_cmdline_offset(&hdr, cmdline_size);
 
     real_mode_size = (hdr.setup_sects + 1) << 9;
     real_mode_base = (hdr.loadflags & LOAD_HIGH) ? 0x10000 : 0x90000;


More information about the Syslinux-commits mailing list