diff options
author | Pawel Moll <pawel.moll@st.com> | 2009-08-24 03:25:38 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-24 03:25:38 -0400 |
commit | d724a9c9d572e092d1ce820463f082697487b874 (patch) | |
tree | 5ee5818b2c54e13a0e492f0ec6aedb9fe29f395e | |
parent | b46373e0d4b9f714ab757aae0c19c41fbcc73ef5 (diff) |
sh: Allow for kernel command line concatenation.
So far kernel command line arguments could be passed in by a bootloader
or defined as CONFIG_CMDLINE, which completely overwriting the first one.
This change allows a developer to declare selected kernel parameters in
a kernel configuration (eg. project-specific defconfig), retaining
possibility of passing others by a bootloader.
The obvious examples of the first type are MTD partition or
bigphysarea-like region definitions, while "debug" option or network
configuration should be given by a bootloader or a JTAG boot script.
Signed-off-by: Pawel Moll <pawel.moll@st.com>
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r-- | arch/sh/Kconfig | 27 | ||||
-rw-r--r-- | arch/sh/kernel/setup.c | 6 |
2 files changed, 28 insertions, 5 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 80b4f9a743a..2f5352c06a0 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -767,12 +767,31 @@ config UBC_WAKEUP | |||
767 | 767 | ||
768 | If unsure, say N. | 768 | If unsure, say N. |
769 | 769 | ||
770 | config CMDLINE_BOOL | 770 | choice |
771 | bool "Default bootloader kernel arguments" | 771 | prompt "Kernel command line" |
772 | optional | ||
773 | default CMDLINE_OVERWRITE | ||
774 | help | ||
775 | Setting this option allows the kernel command line arguments | ||
776 | to be set. | ||
777 | |||
778 | config CMDLINE_OVERWRITE | ||
779 | bool "Overwrite bootloader kernel arguments" | ||
780 | help | ||
781 | Given string will overwrite any arguments passed in by | ||
782 | a bootloader. | ||
783 | |||
784 | config CMDLINE_EXTEND | ||
785 | bool "Extend bootloader kernel arguments" | ||
786 | help | ||
787 | Given string will be concatenated with arguments passed in | ||
788 | by a bootloader. | ||
789 | |||
790 | endchoice | ||
772 | 791 | ||
773 | config CMDLINE | 792 | config CMDLINE |
774 | string "Initial kernel command string" | 793 | string "Kernel command line arguments string" |
775 | depends on CMDLINE_BOOL | 794 | depends on CMDLINE_OVERWRITE || CMDLINE_EXTEND |
776 | default "console=ttySC1,115200" | 795 | default "console=ttySC1,115200" |
777 | 796 | ||
778 | endmenu | 797 | endmenu |
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 212e6bddaeb..d13bbafb4e1 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -404,10 +404,14 @@ void __init setup_arch(char **cmdline_p) | |||
404 | if (!memory_end) | 404 | if (!memory_end) |
405 | memory_end = memory_start + __MEMORY_SIZE; | 405 | memory_end = memory_start + __MEMORY_SIZE; |
406 | 406 | ||
407 | #ifdef CONFIG_CMDLINE_BOOL | 407 | #ifdef CONFIG_CMDLINE_OVERWRITE |
408 | strlcpy(command_line, CONFIG_CMDLINE, sizeof(command_line)); | 408 | strlcpy(command_line, CONFIG_CMDLINE, sizeof(command_line)); |
409 | #else | 409 | #else |
410 | strlcpy(command_line, COMMAND_LINE, sizeof(command_line)); | 410 | strlcpy(command_line, COMMAND_LINE, sizeof(command_line)); |
411 | #ifdef CONFIG_CMDLINE_EXTEND | ||
412 | strlcat(command_line, " ", sizeof(command_line)); | ||
413 | strlcat(command_line, CONFIG_CMDLINE, sizeof(command_line)); | ||
414 | #endif | ||
411 | #endif | 415 | #endif |
412 | 416 | ||
413 | /* Save unparsed command line copy for /proc/cmdline */ | 417 | /* Save unparsed command line copy for /proc/cmdline */ |