x86, boot: Add get_cmd_line_ptr()
authorYinghai Lu <yinghai@kernel.org>
Thu, 24 Jan 2013 20:19:57 +0000 (12:19 -0800)
committerH. Peter Anvin <hpa@linux.intel.com>
Tue, 29 Jan 2013 23:25:45 +0000 (15:25 -0800)
Add an accessor function for the command line address.
Later we will add support for holding a 64-bit address via ext_cmd_line_ptr.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/1359058816-7615-17-git-send-email-yinghai@kernel.org
Cc: Gokul Caushik <caushik1@gmail.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Joe Millenbach <jmillenbach@gmail.com>
Cc: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/boot/compressed/cmdline.c
arch/x86/kernel/head64.c

index 10f6b1178c683cb1901a0704b25e653f949e0c31..b4c913c5c4add0d66d57465bd6a29e6b7c6487e4 100644 (file)
@@ -13,13 +13,19 @@ static inline char rdfs8(addr_t addr)
        return *((char *)(fs + addr));
 }
 #include "../cmdline.c"
+static unsigned long get_cmd_line_ptr(void)
+{
+       unsigned long cmd_line_ptr = real_mode->hdr.cmd_line_ptr;
+
+       return cmd_line_ptr;
+}
 int cmdline_find_option(const char *option, char *buffer, int bufsize)
 {
-       return __cmdline_find_option(real_mode->hdr.cmd_line_ptr, option, buffer, bufsize);
+       return __cmdline_find_option(get_cmd_line_ptr(), option, buffer, bufsize);
 }
 int cmdline_find_option_bool(const char *option)
 {
-       return __cmdline_find_option_bool(real_mode->hdr.cmd_line_ptr, option);
+       return __cmdline_find_option_bool(get_cmd_line_ptr(), option);
 }
 
 #endif
index b88a1fab2158d51aa6f1211898c7e00447f372e4..62c8ce44cac437124324bc30cef664969ea157e8 100644 (file)
@@ -112,14 +112,23 @@ static void __init clear_bss(void)
               (unsigned long) __bss_stop - (unsigned long) __bss_start);
 }
 
+static unsigned long get_cmd_line_ptr(void)
+{
+       unsigned long cmd_line_ptr = boot_params.hdr.cmd_line_ptr;
+
+       return cmd_line_ptr;
+}
+
 static void __init copy_bootdata(char *real_mode_data)
 {
        char * command_line;
+       unsigned long cmd_line_ptr;
 
        memcpy(&boot_params, real_mode_data, sizeof boot_params);
        sanitize_boot_params(&boot_params);
-       if (boot_params.hdr.cmd_line_ptr) {
-               command_line = __va(boot_params.hdr.cmd_line_ptr);
+       cmd_line_ptr = get_cmd_line_ptr();
+       if (cmd_line_ptr) {
+               command_line = __va(cmd_line_ptr);
                memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
        }
 }