From: juhosg Date: Thu, 10 Sep 2009 18:30:01 +0000 (+0000) Subject: kernel: add generic image_cmdline hack to MIPS targets X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/31cee17e3864f7a4f4c2e3ab662c78425210b39d kernel: add generic image_cmdline hack to MIPS targets git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17563 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/target/linux/adm5120/router_be/config-2.6.28 b/target/linux/adm5120/router_be/config-2.6.28 index 21cd6145c..4cbb744f9 100644 --- a/target/linux/adm5120/router_be/config-2.6.28 +++ b/target/linux/adm5120/router_be/config-2.6.28 @@ -95,6 +95,7 @@ CONFIG_HZ=250 CONFIG_HZ_250=y # CONFIG_I2C is not set # CONFIG_IDE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y diff --git a/target/linux/adm5120/router_be/config-2.6.30 b/target/linux/adm5120/router_be/config-2.6.30 index 19326577c..825ae7557 100644 --- a/target/linux/adm5120/router_be/config-2.6.30 +++ b/target/linux/adm5120/router_be/config-2.6.30 @@ -107,6 +107,7 @@ CONFIG_HZ=250 # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y diff --git a/target/linux/adm5120/router_le/config-2.6.28 b/target/linux/adm5120/router_le/config-2.6.28 index 09cf55b4c..038b64a11 100644 --- a/target/linux/adm5120/router_le/config-2.6.28 +++ b/target/linux/adm5120/router_le/config-2.6.28 @@ -124,6 +124,7 @@ CONFIG_HZ_250=y # CONFIG_IDE is not set CONFIG_IEEE80211=m CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y diff --git a/target/linux/adm5120/router_le/config-2.6.30 b/target/linux/adm5120/router_le/config-2.6.30 index a65db335d..73c06565d 100644 --- a/target/linux/adm5120/router_le/config-2.6.30 +++ b/target/linux/adm5120/router_le/config-2.6.30 @@ -135,6 +135,7 @@ CONFIG_HZ=250 # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y diff --git a/target/linux/ar7/config-2.6.27 b/target/linux/ar7/config-2.6.27 index 07efaf86b..6f419ca15 100644 --- a/target/linux/ar7/config-2.6.27 +++ b/target/linux/ar7/config-2.6.27 @@ -76,6 +76,7 @@ CONFIG_HAVE_OPROFILE=y CONFIG_HW_RANDOM=y # CONFIG_I2C is not set # CONFIG_IDE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y # CONFIG_ISDN is not set diff --git a/target/linux/ar7/config-default b/target/linux/ar7/config-default index 7c81c1e52..f8c6f3c8e 100644 --- a/target/linux/ar7/config-default +++ b/target/linux/ar7/config-default @@ -77,6 +77,7 @@ CONFIG_HAVE_MLOCK=y CONFIG_HAVE_OPROFILE=y CONFIG_HW_RANDOM=y # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y # CONFIG_ISDN is not set diff --git a/target/linux/ar71xx/config-2.6.28 b/target/linux/ar71xx/config-2.6.28 index dd2c30d6d..cad5e4da4 100644 --- a/target/linux/ar71xx/config-2.6.28 +++ b/target/linux/ar71xx/config-2.6.28 @@ -98,6 +98,7 @@ CONFIG_I2C_BOARDINFO=y CONFIG_I2C_GPIO=y CONFIG_ICPLUS_PHY=y # CONFIG_IDE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_SOURCE="../../root" diff --git a/target/linux/ar71xx/config-2.6.30 b/target/linux/ar71xx/config-2.6.30 index e193ba61a..e948763d7 100644 --- a/target/linux/ar71xx/config-2.6.30 +++ b/target/linux/ar71xx/config-2.6.30 @@ -110,6 +110,7 @@ CONFIG_I2C_ALGOBIT=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_GPIO=y CONFIG_ICPLUS_PHY=y +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_SOURCE="../../root" diff --git a/target/linux/ar71xx/config-2.6.31 b/target/linux/ar71xx/config-2.6.31 index 4e09c6cb1..34b82b8fe 100644 --- a/target/linux/ar71xx/config-2.6.31 +++ b/target/linux/ar71xx/config-2.6.31 @@ -110,6 +110,7 @@ CONFIG_I2C_ALGOBIT=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_GPIO=y CONFIG_ICPLUS_PHY=y +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_SOURCE="../../root" diff --git a/target/linux/atheros/config-2.6.28 b/target/linux/atheros/config-2.6.28 index 21f0edd8f..888b7f4fd 100644 --- a/target/linux/atheros/config-2.6.28 +++ b/target/linux/atheros/config-2.6.28 @@ -74,6 +74,7 @@ CONFIG_HW_HAS_PCI=y CONFIG_HW_RANDOM=y # CONFIG_I2C is not set # CONFIG_IDE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IP175C_PHY=y CONFIG_IRQ_CPU=y diff --git a/target/linux/atheros/config-2.6.30 b/target/linux/atheros/config-2.6.30 index da589a451..11fc0220a 100644 --- a/target/linux/atheros/config-2.6.30 +++ b/target/linux/atheros/config-2.6.30 @@ -87,6 +87,7 @@ CONFIG_HAVE_OPROFILE=y CONFIG_HW_HAS_PCI=y CONFIG_HW_RANDOM=y # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IP175C_PHY=y CONFIG_IRQ_CPU=y diff --git a/target/linux/au1000/au1500/config-default b/target/linux/au1000/au1500/config-default index e459010c5..e56e533ec 100644 --- a/target/linux/au1000/au1500/config-default +++ b/target/linux/au1000/au1500/config-default @@ -93,6 +93,7 @@ CONFIG_I2C_ALGOPCA=m CONFIG_I2C_ALGOPCF=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=m +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y CONFIG_KEXEC=y diff --git a/target/linux/au1000/au1550/config-default b/target/linux/au1000/au1550/config-default index a3623adfe..daf337c7d 100644 --- a/target/linux/au1000/au1550/config-default +++ b/target/linux/au1000/au1550/config-default @@ -97,6 +97,7 @@ CONFIG_IEEE80211_CRYPT_CCMP=m CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_IEEE80211_CRYPT_WEP=m CONFIG_IFB=m +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INET_DIAG=m CONFIG_INET_TCP_DIAG=m CONFIG_INITRAMFS_ROOT_GID=1000 diff --git a/target/linux/brcm47xx/config-2.6.28 b/target/linux/brcm47xx/config-2.6.28 index fd7ffeedf..91920c79f 100644 --- a/target/linux/brcm47xx/config-2.6.28 +++ b/target/linux/brcm47xx/config-2.6.28 @@ -79,6 +79,7 @@ CONFIG_HZ=250 CONFIG_HZ_250=y # CONFIG_I2C is not set # CONFIG_IDE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" # CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IRQ_CPU=y diff --git a/target/linux/brcm47xx/config-2.6.30 b/target/linux/brcm47xx/config-2.6.30 index 967c586f9..77c42b61e 100644 --- a/target/linux/brcm47xx/config-2.6.30 +++ b/target/linux/brcm47xx/config-2.6.30 @@ -90,6 +90,7 @@ CONFIG_HZ=250 # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" # CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IRQ_CPU=y diff --git a/target/linux/brcm63xx/config-2.6.27 b/target/linux/brcm63xx/config-2.6.27 index 5b3596bb5..7264d7f4c 100644 --- a/target/linux/brcm63xx/config-2.6.27 +++ b/target/linux/brcm63xx/config-2.6.27 @@ -100,6 +100,7 @@ CONFIG_HZ=250 CONFIG_HZ_250=y # CONFIG_I2C is not set # CONFIG_IDE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y diff --git a/target/linux/brcm63xx/config-2.6.28 b/target/linux/brcm63xx/config-2.6.28 index 9f0ad2d9f..97df382dd 100644 --- a/target/linux/brcm63xx/config-2.6.28 +++ b/target/linux/brcm63xx/config-2.6.28 @@ -94,6 +94,7 @@ CONFIG_HZ=250 CONFIG_HZ_250=y # CONFIG_I2C is not set # CONFIG_IDE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y diff --git a/target/linux/brcm63xx/config-2.6.30 b/target/linux/brcm63xx/config-2.6.30 index e6bc3d3b3..783444856 100644 --- a/target/linux/brcm63xx/config-2.6.30 +++ b/target/linux/brcm63xx/config-2.6.30 @@ -106,6 +106,7 @@ CONFIG_HZ=250 # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y diff --git a/target/linux/cobalt/config-default b/target/linux/cobalt/config-default index cea74962a..37a6be634 100644 --- a/target/linux/cobalt/config-default +++ b/target/linux/cobalt/config-default @@ -170,6 +170,7 @@ CONFIG_HZ_250=y # CONFIG_I2C is not set CONFIG_I8253=y CONFIG_I8259=y +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_INET_XFRM_MODE_BEET=y diff --git a/target/linux/generic-2.6/patches-2.6.27/021-mips_image_cmdline_hack.patch b/target/linux/generic-2.6/patches-2.6.27/021-mips_image_cmdline_hack.patch new file mode 100644 index 000000000..cd315a4cf --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.27/021-mips_image_cmdline_hack.patch @@ -0,0 +1,59 @@ +--- a/arch/mips/kernel/setup.c ++++ b/arch/mips/kernel/setup.c +@@ -545,8 +545,28 @@ static void __init resource_init(void) + } + } + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++static void __init process__image_cmdline(void) ++{ ++ extern char __image_cmdline[]; ++ ++ if (__image_cmdline[0] == '\0') ++ return; ++ ++ if (__image_cmdline[0] == '-') { ++ strlcpy(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } else { ++ strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); ++ strlcat(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } ++} ++#else ++static void inline process__image_cmdline(void) {} ++#endif ++ + void __init setup_arch(char **cmdline_p) + { ++ process__image_cmdline(); + cpu_probe(); + prom_init(); + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -771,6 +771,10 @@ config SYNC_R4K + config MIPS_MACHINE + def_bool n + ++config IMAGE_CMDLINE_HACK ++ bool "OpenWrt specific image command line hack" ++ default n ++ + config NO_IOPORT + def_bool n + +--- a/arch/mips/kernel/head.S ++++ b/arch/mips/kernel/head.S +@@ -143,6 +143,12 @@ FEXPORT(__kernel_entry) + j kernel_entry + #endif + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++ .ascii "CMDLINE:" ++EXPORT(__image_cmdline) ++ .fill 0x400 ++#endif /* CONFIG_IMAGE_CMDLINE_HACK */ ++ + __REF + + NESTED(kernel_entry, 16, sp) # kernel entry point diff --git a/target/linux/generic-2.6/patches-2.6.27/021-mips_simple_prom_emulator.patch b/target/linux/generic-2.6/patches-2.6.27/021-mips_simple_prom_emulator.patch index 305e3fd8d..527abc4fc 100644 --- a/target/linux/generic-2.6/patches-2.6.27/021-mips_simple_prom_emulator.patch +++ b/target/linux/generic-2.6/patches-2.6.27/021-mips_simple_prom_emulator.patch @@ -8,13 +8,13 @@ +config PROM_EMU + def_bool n - config NO_IOPORT - def_bool n + config IMAGE_CMDLINE_HACK + bool "OpenWrt specific image command line hack" --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S -@@ -143,6 +143,15 @@ FEXPORT(__kernel_entry) - j kernel_entry - #endif +@@ -149,6 +149,15 @@ EXPORT(__image_cmdline) + .fill 0x400 + #endif /* CONFIG_IMAGE_CMDLINE_HACK */ +#ifdef CONFIG_PROM_EMU +EXPORT(prom_emu_argv) @@ -28,7 +28,7 @@ __REF NESTED(kernel_entry, 16, sp) # kernel entry point -@@ -183,6 +192,19 @@ NESTED(kernel_entry, 16, sp) # kernel +@@ -189,6 +198,19 @@ NESTED(kernel_entry, 16, sp) # kernel LONG_S zero, (t0) bne t0, t1, 1b diff --git a/target/linux/generic-2.6/patches-2.6.28/021-mips_image_cmdline_hack.patch b/target/linux/generic-2.6/patches-2.6.28/021-mips_image_cmdline_hack.patch new file mode 100644 index 000000000..59bc6233e --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.28/021-mips_image_cmdline_hack.patch @@ -0,0 +1,59 @@ +--- a/arch/mips/kernel/setup.c ++++ b/arch/mips/kernel/setup.c +@@ -545,8 +545,28 @@ static void __init resource_init(void) + } + } + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++static void __init process__image_cmdline(void) ++{ ++ extern char __image_cmdline[]; ++ ++ if (__image_cmdline[0] == '\0') ++ return; ++ ++ if (__image_cmdline[0] == '-') { ++ strlcpy(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } else { ++ strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); ++ strlcat(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } ++} ++#else ++static void inline process__image_cmdline(void) {} ++#endif ++ + void __init setup_arch(char **cmdline_p) + { ++ process__image_cmdline(); + cpu_probe(); + prom_init(); + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -766,6 +766,10 @@ config SYNC_R4K + config MIPS_MACHINE + def_bool n + ++config IMAGE_CMDLINE_HACK ++ bool "OpenWrt specific image command line hack" ++ default n ++ + config NO_IOPORT + def_bool n + +--- a/arch/mips/kernel/head.S ++++ b/arch/mips/kernel/head.S +@@ -143,6 +143,12 @@ FEXPORT(__kernel_entry) + j kernel_entry + #endif + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++ .ascii "CMDLINE:" ++EXPORT(__image_cmdline) ++ .fill 0x400 ++#endif /* CONFIG_IMAGE_CMDLINE_HACK */ ++ + __REF + + NESTED(kernel_entry, 16, sp) # kernel entry point diff --git a/target/linux/generic-2.6/patches-2.6.28/021-mips_simple_prom_emulator.patch b/target/linux/generic-2.6/patches-2.6.28/021-mips_simple_prom_emulator.patch index f473b6550..5aa5245d6 100644 --- a/target/linux/generic-2.6/patches-2.6.28/021-mips_simple_prom_emulator.patch +++ b/target/linux/generic-2.6/patches-2.6.28/021-mips_simple_prom_emulator.patch @@ -8,13 +8,13 @@ +config PROM_EMU + def_bool n - config NO_IOPORT - def_bool n + config IMAGE_CMDLINE_HACK + bool "OpenWrt specific image command line hack" --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S -@@ -143,6 +143,15 @@ FEXPORT(__kernel_entry) - j kernel_entry - #endif +@@ -149,6 +149,15 @@ EXPORT(__image_cmdline) + .fill 0x400 + #endif /* CONFIG_IMAGE_CMDLINE_HACK */ +#ifdef CONFIG_PROM_EMU +EXPORT(prom_emu_argv) @@ -28,7 +28,7 @@ __REF NESTED(kernel_entry, 16, sp) # kernel entry point -@@ -183,6 +192,19 @@ NESTED(kernel_entry, 16, sp) # kernel +@@ -189,6 +198,19 @@ NESTED(kernel_entry, 16, sp) # kernel LONG_S zero, (t0) bne t0, t1, 1b diff --git a/target/linux/generic-2.6/patches-2.6.30/021-mips_image_cmdline_hack.patch b/target/linux/generic-2.6/patches-2.6.30/021-mips_image_cmdline_hack.patch new file mode 100644 index 000000000..75dc2b068 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.30/021-mips_image_cmdline_hack.patch @@ -0,0 +1,59 @@ +--- a/arch/mips/kernel/setup.c ++++ b/arch/mips/kernel/setup.c +@@ -546,8 +546,28 @@ static void __init resource_init(void) + } + } + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++static void __init process__image_cmdline(void) ++{ ++ extern char __image_cmdline[]; ++ ++ if (__image_cmdline[0] == '\0') ++ return; ++ ++ if (__image_cmdline[0] == '-') { ++ strlcpy(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } else { ++ strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); ++ strlcat(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } ++} ++#else ++static void inline process__image_cmdline(void) {} ++#endif ++ + void __init setup_arch(char **cmdline_p) + { ++ process__image_cmdline(); + cpu_probe(); + prom_init(); + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -806,6 +806,10 @@ config SYNC_R4K + config MIPS_MACHINE + def_bool n + ++config IMAGE_CMDLINE_HACK ++ bool "OpenWrt specific image command line hack" ++ default n ++ + config NO_IOPORT + def_bool n + +--- a/arch/mips/kernel/head.S ++++ b/arch/mips/kernel/head.S +@@ -143,6 +143,12 @@ FEXPORT(__kernel_entry) + j kernel_entry + #endif + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++ .ascii "CMDLINE:" ++EXPORT(__image_cmdline) ++ .fill 0x400 ++#endif /* CONFIG_IMAGE_CMDLINE_HACK */ ++ + __REF + + NESTED(kernel_entry, 16, sp) # kernel entry point diff --git a/target/linux/generic-2.6/patches-2.6.30/021-mips_simple_prom_emulator.patch b/target/linux/generic-2.6/patches-2.6.30/021-mips_simple_prom_emulator.patch index 49045fea3..80f402c4d 100644 --- a/target/linux/generic-2.6/patches-2.6.30/021-mips_simple_prom_emulator.patch +++ b/target/linux/generic-2.6/patches-2.6.30/021-mips_simple_prom_emulator.patch @@ -8,13 +8,13 @@ +config PROM_EMU + def_bool n - config NO_IOPORT - def_bool n + config IMAGE_CMDLINE_HACK + bool "OpenWrt specific image command line hack" --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S -@@ -143,6 +143,15 @@ FEXPORT(__kernel_entry) - j kernel_entry - #endif +@@ -149,6 +149,15 @@ EXPORT(__image_cmdline) + .fill 0x400 + #endif /* CONFIG_IMAGE_CMDLINE_HACK */ +#ifdef CONFIG_PROM_EMU +EXPORT(prom_emu_argv) @@ -28,7 +28,7 @@ __REF NESTED(kernel_entry, 16, sp) # kernel entry point -@@ -183,6 +192,19 @@ NESTED(kernel_entry, 16, sp) # kernel +@@ -189,6 +198,19 @@ NESTED(kernel_entry, 16, sp) # kernel LONG_S zero, (t0) bne t0, t1, 1b diff --git a/target/linux/generic-2.6/patches-2.6.31/021-mips_image_cmdline_hack.patch b/target/linux/generic-2.6/patches-2.6.31/021-mips_image_cmdline_hack.patch new file mode 100644 index 000000000..6b2726416 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.31/021-mips_image_cmdline_hack.patch @@ -0,0 +1,59 @@ +--- a/arch/mips/kernel/setup.c ++++ b/arch/mips/kernel/setup.c +@@ -546,8 +546,28 @@ static void __init resource_init(void) + } + } + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++static void __init process__image_cmdline(void) ++{ ++ extern char __image_cmdline[]; ++ ++ if (__image_cmdline[0] == '\0') ++ return; ++ ++ if (__image_cmdline[0] == '-') { ++ strlcpy(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } else { ++ strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); ++ strlcat(arcs_cmdline, __image_cmdline, sizeof(arcs_cmdline)); ++ } ++} ++#else ++static void inline process__image_cmdline(void) {} ++#endif ++ + void __init setup_arch(char **cmdline_p) + { ++ process__image_cmdline(); + cpu_probe(); + prom_init(); + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -840,6 +840,10 @@ config SYNC_R4K + config MIPS_MACHINE + def_bool n + ++config IMAGE_CMDLINE_HACK ++ bool "OpenWrt specific image command line hack" ++ default n ++ + config NO_IOPORT + def_bool n + +--- a/arch/mips/kernel/head.S ++++ b/arch/mips/kernel/head.S +@@ -143,6 +143,12 @@ FEXPORT(__kernel_entry) + j kernel_entry + #endif + ++#ifdef CONFIG_IMAGE_CMDLINE_HACK ++ .ascii "CMDLINE:" ++EXPORT(__image_cmdline) ++ .fill 0x400 ++#endif /* CONFIG_IMAGE_CMDLINE_HACK */ ++ + __REF + + NESTED(kernel_entry, 16, sp) # kernel entry point diff --git a/target/linux/generic-2.6/patches-2.6.31/021-mips_simple_prom_emulator.patch b/target/linux/generic-2.6/patches-2.6.31/021-mips_simple_prom_emulator.patch index b53ca3f50..3119420dd 100644 --- a/target/linux/generic-2.6/patches-2.6.31/021-mips_simple_prom_emulator.patch +++ b/target/linux/generic-2.6/patches-2.6.31/021-mips_simple_prom_emulator.patch @@ -8,13 +8,13 @@ +config PROM_EMU + def_bool n - config NO_IOPORT - def_bool n + config IMAGE_CMDLINE_HACK + bool "OpenWrt specific image command line hack" --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S -@@ -143,6 +143,15 @@ FEXPORT(__kernel_entry) - j kernel_entry - #endif +@@ -149,6 +149,15 @@ EXPORT(__image_cmdline) + .fill 0x400 + #endif /* CONFIG_IMAGE_CMDLINE_HACK */ +#ifdef CONFIG_PROM_EMU +EXPORT(prom_emu_argv) @@ -28,7 +28,7 @@ __REF NESTED(kernel_entry, 16, sp) # kernel entry point -@@ -183,6 +192,19 @@ NESTED(kernel_entry, 16, sp) # kernel +@@ -189,6 +198,19 @@ NESTED(kernel_entry, 16, sp) # kernel LONG_S zero, (t0) bne t0, t1, 1b diff --git a/target/linux/ifxmips/config-2.6.27 b/target/linux/ifxmips/config-2.6.27 index b2fb156da..eb621132f 100644 --- a/target/linux/ifxmips/config-2.6.27 +++ b/target/linux/ifxmips/config-2.6.27 @@ -87,6 +87,7 @@ CONFIG_IFXMIPS_MII0=y CONFIG_IFXMIPS_PROM_ASC1=y CONFIG_IFXMIPS_SSC=y CONFIG_IFXMIPS_WDT=y +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y CONFIG_KALLSYMS=y diff --git a/target/linux/ifxmips/config-2.6.28 b/target/linux/ifxmips/config-2.6.28 index 745cfe605..0f9da8af3 100644 --- a/target/linux/ifxmips/config-2.6.28 +++ b/target/linux/ifxmips/config-2.6.28 @@ -81,6 +81,7 @@ CONFIG_IFXMIPS_MII0=y CONFIG_IFXMIPS_PROM_ASC1=y CONFIG_IFXMIPS_SSC=y CONFIG_IFXMIPS_WDT=y +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y CONFIG_KALLSYMS=y diff --git a/target/linux/ramips/rt288x/config-2.6.30 b/target/linux/ramips/rt288x/config-2.6.30 index 0bab2d0d7..dd83f6414 100644 --- a/target/linux/ramips/rt288x/config-2.6.30 +++ b/target/linux/ramips/rt288x/config-2.6.30 @@ -76,6 +76,7 @@ CONFIG_HAVE_OPROFILE=y CONFIG_HW_HAS_PCI=y CONFIG_HW_RANDOM=m # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y # CONFIG_ISDN is not set diff --git a/target/linux/ramips/rt305x/config-2.6.30 b/target/linux/ramips/rt305x/config-2.6.30 index 43376c52a..c51b4cdd1 100644 --- a/target/linux/ramips/rt305x/config-2.6.30 +++ b/target/linux/ramips/rt305x/config-2.6.30 @@ -75,6 +75,7 @@ CONFIG_HAVE_MLOCK=y CONFIG_HAVE_OPROFILE=y CONFIG_HW_RANDOM=m # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y # CONFIG_ISDN is not set diff --git a/target/linux/rb532/config-default b/target/linux/rb532/config-default index c2fb8c22d..285db249f 100644 --- a/target/linux/rb532/config-default +++ b/target/linux/rb532/config-default @@ -94,6 +94,7 @@ CONFIG_HZ=250 # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_I2C is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQ_CPU=y CONFIG_KEXEC=y diff --git a/target/linux/sibyte/config-default b/target/linux/sibyte/config-default index 6f8e4e57e..9ca2a6268 100644 --- a/target/linux/sibyte/config-default +++ b/target/linux/sibyte/config-default @@ -99,6 +99,7 @@ CONFIG_I2C_SIBYTE=y CONFIG_I2C=y # CONFIG_IDE is not set # CONFIG_IEEE80211 is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_SOURCE="../../root"