* [PATCH] Add uboot commandline argument passing support to m68knommu @ 2009-09-18 16:27 Lennart Sorensen 2009-09-18 16:39 ` Daniel Walker 0 siblings, 1 reply; 6+ messages in thread From: Lennart Sorensen @ 2009-09-18 16:27 UTC (permalink / raw) To: linux-kernel; +Cc: Greg Ungerer, uclinux-dev, Len Sorensen This patch adds m68knommu support for getting the kernel command line arguments from uboot, including the passing of an initrd image from uboot. We use this on a 5270/5271 based board, and have used it on the 5271evb development board. It is based on a patch found in the linux-2.6-denx git tree, although that tree seems to have had lots of other changes since which are not in the main Linus kernel. I believe this will work on all coldfires, although other m68knommu might be missing the _init_sp stuff in head.S as far as I can tell. I only have the coldfire to test on. Signed-off-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca> diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index e2201b9..064f591 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig @@ -533,6 +533,13 @@ config AVNET default y depends on (AVNET5282) +config UBOOT + bool "Support for U-Boot command line parameters" + help + If you say Y here kernel will try to collect command + line parameters from the initial u-boot stack. + default n + config 4KSTACKS bool "Use 4Kb for kernel stacks instead of 8Kb" default y diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 5c2bb3e..0e2114e 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c @@ -29,6 +29,8 @@ #include <linux/bootmem.h> #include <linux/seq_file.h> #include <linux/init.h> +#include <linux/initrd.h> +#include <linux/root_dev.h> #include <asm/setup.h> #include <asm/irq.h> @@ -52,6 +54,9 @@ void (*mach_reset)(void); void (*mach_halt)(void); void (*mach_power_off)(void); +#if defined(CONFIG_UBOOT) +void parse_uboot_commandline(char *commandp, int size); +#endif #ifdef CONFIG_M68000 #define CPU "MC68000" @@ -128,7 +133,23 @@ void __init setup_arch(char **cmdline_p) #if defined(CONFIG_BOOTPARAM) strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); command_line[sizeof(command_line) - 1] = 0; -#endif +#endif /* CONFIG_BOOTPARAM */ + +#if defined(CONFIG_UBOOT) + /* CONFIG_UBOOT and CONFIG_BOOTPARAM defined, concatenate cmdline */ + #if defined(CONFIG_BOOTPARAM) + /* Add the whitespace separator */ + command_line[strlen(CONFIG_BOOTPARAM_STRING)] = ' '; + /* Parse uboot command line into the rest of the buffer */ + parse_uboot_commandline( + &command_line[(strlen(CONFIG_BOOTPARAM_STRING)+1)], + (sizeof(command_line) - (strlen(CONFIG_BOOTPARAM_STRING)+1))); + /* Only CONFIG_UBOOT defined, create cmdline */ + #else + parse_uboot_commandline(&command_line[0], sizeof(command_line)); + #endif /* CONFIG_BOOTPARAM */ + command_line[sizeof(command_line) - 1] = 0; +#endif /* CONFIG_UBOOT */ printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); @@ -204,12 +225,82 @@ void __init setup_arch(char **cmdline_p) free_bootmem(memory_start, memory_end - memory_start); reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); +#if defined(CONFIG_UBOOT) && defined(CONFIG_BLK_DEV_INITRD) + if((initrd_start > 0) && (initrd_start < initrd_end) && (initrd_end < memory_end)) { + reserve_bootmem(initrd_start, initrd_end - initrd_start, BOOTMEM_DEFAULT); + } +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ + /* * Get kmalloc into gear. */ paging_init(); } +#if defined(CONFIG_UBOOT) +/* + * parse_uboot_commandline + * + * Copies u-boot commandline arguments and store them in the proper linux + * variables. + * + * Assumes: + * _init_sp global contains the address in the stack pointer when the + * kernel starts (see head.S::_start) + * + * U-Boot calling convention: + * (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end); + * + * _init_sp can be parsed as such + * + * _init_sp+00 = u-boot cmd after jsr into kernel (skip) + * _init_sp+04 = &kernel board_info (residual data) + * _init_sp+08 = &initrd_start + * _init_sp+12 = &initrd_end + * _init_sp+16 = &cmd_start + * _init_sp+20 = &cmd_end + * + * This also assumes that the memory locations pointed to are still + * unmodified. U-boot places them near the end of external SDRAM. + * + * Argument(s): + * commandp = the linux commandline arg container to fill. + * size = the sizeof commandp. + * + * Returns: + */ +void parse_uboot_commandline(char *commandp, int size) +{ + extern unsigned long _init_sp; + unsigned long *sp; + unsigned long uboot_kbd; + unsigned long uboot_initrd_start, uboot_initrd_end; + unsigned long uboot_cmd_start, uboot_cmd_end; + + + sp = (unsigned long *)_init_sp; + uboot_kbd = sp[1]; + uboot_initrd_start = sp[2]; + uboot_initrd_end = sp[3]; + uboot_cmd_start = sp[4]; + uboot_cmd_end = sp[5]; + + if (uboot_cmd_start && uboot_cmd_end) { + strncpy(commandp, (const char *)uboot_cmd_start, size); + } +#if defined(CONFIG_BLK_DEV_INITRD) + if (uboot_initrd_start && uboot_initrd_end && + (uboot_initrd_end > uboot_initrd_start)) { + initrd_start = uboot_initrd_start; + initrd_end = uboot_initrd_end; + ROOT_DEV = Root_RAM0; + printk("initrd at 0x%lx:0x%lx\n", + initrd_start, initrd_end); + } +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ +} +#endif /* #if defined(CONFIG_UBOOT) */ + /* * Get CPU information for use by the procfs. */ diff --git a/arch/m68knommu/platform/coldfire/head.S b/arch/m68knommu/platform/coldfire/head.S index 2b0d73c..4b91aa2 100644 --- a/arch/m68knommu/platform/coldfire/head.S +++ b/arch/m68knommu/platform/coldfire/head.S @@ -106,6 +106,9 @@ .global _ramvec .global _ramstart .global _ramend +#if defined(CONFIG_UBOOT) +.global _init_sp +#endif /*****************************************************************************/ @@ -124,6 +127,10 @@ _ramstart: .long 0 _ramend: .long 0 +#if defined(CONFIG_UBOOT) +_init_sp: +.long 0 +#endif /*****************************************************************************/ @@ -137,6 +144,9 @@ __HEAD _start: nop /* filler */ movew #0x2700, %sr /* no interrupts */ +#if defined(CONFIG_UBOOT) + movel %sp,_init_sp /* save initial stack pointer */ +#endif /* * Do any platform or board specific setup now. Most boards -- Len Sorensen ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Add uboot commandline argument passing support to m68knommu 2009-09-18 16:27 [PATCH] Add uboot commandline argument passing support to m68knommu Lennart Sorensen @ 2009-09-18 16:39 ` Daniel Walker 2009-09-18 17:49 ` [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) Lennart Sorensen 0 siblings, 1 reply; 6+ messages in thread From: Daniel Walker @ 2009-09-18 16:39 UTC (permalink / raw) To: Lennart Sorensen; +Cc: linux-kernel, Greg Ungerer, uclinux-dev On Fri, 2009-09-18 at 12:27 -0400, Lennart Sorensen wrote: > + > + if (uboot_cmd_start && uboot_cmd_end) { > + strncpy(commandp, (const char *)uboot_cmd_start, > size); > + } > +#if defined(CONFIG_BLK_DEV_INITRD) > + if (uboot_initrd_start && uboot_initrd_end && > + (uboot_initrd_end > uboot_initrd_start)) > { > + initrd_start = uboot_initrd_start; > + initrd_end = uboot_initrd_end; > + ROOT_DEV = Root_RAM0; > + printk("initrd at 0x%lx:0x%lx\n", > + initrd_start, initrd_end); > + } > +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ > +} You have a couple of various checkpatch errors in this patch. We use scripts/checkpatch.pl to check for code style issues. Could you run that on your patch and fix any errors it finds? A couple are whitespace related and you can use scripts/cleanpatch or scripts/cleanfile to remove whitespace (so I hear. I've never run those scripts personally) Daniel ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) 2009-09-18 16:39 ` Daniel Walker @ 2009-09-18 17:49 ` Lennart Sorensen 2009-09-18 17:54 ` Daniel Walker 2009-10-01 6:28 ` [uClinux-dev] " Greg Ungerer 0 siblings, 2 replies; 6+ messages in thread From: Lennart Sorensen @ 2009-09-18 17:49 UTC (permalink / raw) To: Daniel Walker; +Cc: linux-kernel, Greg Ungerer, uclinux-dev On Fri, Sep 18, 2009 at 09:39:04AM -0700, Daniel Walker wrote: > You have a couple of various checkpatch errors in this patch. We use > scripts/checkpatch.pl to check for code style issues. Could you run that > on your patch and fix any errors it finds? A couple are whitespace > related and you can use scripts/cleanpatch or scripts/cleanfile to > remove whitespace (so I hear. I've never run those scripts personally) Oh dear. I guess the original patch was a bit messy then. OK here we go again with a checkpatch approved patch. --- This patch adds m68knommu support for getting the kernel command line arguments from uboot, including the passing of an initrd image from uboot. We use this on a 5270/5271 based board, and have used it on the 5271evb development board. It is based on a patch found in the linux-2.6-denx git tree, although that tree seems to have had lots of other changes since which are not in the main Linus kernel. I believe this will work on all coldfires, although other m68knommu might be missing the _init_sp stuff in head.S as far as I can tell. I only have the coldfire to test on. Signed-off-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca> diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index e2201b9..064f591 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig @@ -533,6 +533,13 @@ config AVNET default y depends on (AVNET5282) +config UBOOT + bool "Support for U-Boot command line parameters" + help + If you say Y here kernel will try to collect command + line parameters from the initial u-boot stack. + default n + config 4KSTACKS bool "Use 4Kb for kernel stacks instead of 8Kb" default y diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 5c2bb3e..ba92b90 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c @@ -29,6 +29,8 @@ #include <linux/bootmem.h> #include <linux/seq_file.h> #include <linux/init.h> +#include <linux/initrd.h> +#include <linux/root_dev.h> #include <asm/setup.h> #include <asm/irq.h> @@ -52,7 +54,6 @@ void (*mach_reset)(void); void (*mach_halt)(void); void (*mach_power_off)(void); - #ifdef CONFIG_M68000 #define CPU "MC68000" #endif @@ -111,6 +112,69 @@ void (*mach_power_off)(void); extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; extern int _ramstart, _ramend; +#if defined(CONFIG_UBOOT) +/* + * parse_uboot_commandline + * + * Copies u-boot commandline arguments and store them in the proper linux + * variables. + * + * Assumes: + * _init_sp global contains the address in the stack pointer when the + * kernel starts (see head.S::_start) + * + * U-Boot calling convention: + * (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end); + * + * _init_sp can be parsed as such + * + * _init_sp+00 = u-boot cmd after jsr into kernel (skip) + * _init_sp+04 = &kernel board_info (residual data) + * _init_sp+08 = &initrd_start + * _init_sp+12 = &initrd_end + * _init_sp+16 = &cmd_start + * _init_sp+20 = &cmd_end + * + * This also assumes that the memory locations pointed to are still + * unmodified. U-boot places them near the end of external SDRAM. + * + * Argument(s): + * commandp = the linux commandline arg container to fill. + * size = the sizeof commandp. + * + * Returns: + */ +void parse_uboot_commandline(char *commandp, int size) +{ + extern unsigned long _init_sp; + unsigned long *sp; + unsigned long uboot_kbd; + unsigned long uboot_initrd_start, uboot_initrd_end; + unsigned long uboot_cmd_start, uboot_cmd_end; + + + sp = (unsigned long *)_init_sp; + uboot_kbd = sp[1]; + uboot_initrd_start = sp[2]; + uboot_initrd_end = sp[3]; + uboot_cmd_start = sp[4]; + uboot_cmd_end = sp[5]; + + if (uboot_cmd_start && uboot_cmd_end) + strncpy(commandp, (const char *)uboot_cmd_start, size); +#if defined(CONFIG_BLK_DEV_INITRD) + if (uboot_initrd_start && uboot_initrd_end && + (uboot_initrd_end > uboot_initrd_start)) { + initrd_start = uboot_initrd_start; + initrd_end = uboot_initrd_end; + ROOT_DEV = Root_RAM0; + printk(KERN_INFO "initrd at 0x%lx:0x%lx\n", + initrd_start, initrd_end); + } +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ +} +#endif /* #if defined(CONFIG_UBOOT) */ + void __init setup_arch(char **cmdline_p) { int bootmap_size; @@ -128,7 +192,24 @@ void __init setup_arch(char **cmdline_p) #if defined(CONFIG_BOOTPARAM) strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); command_line[sizeof(command_line) - 1] = 0; -#endif +#endif /* CONFIG_BOOTPARAM */ + +#if defined(CONFIG_UBOOT) + /* CONFIG_UBOOT and CONFIG_BOOTPARAM defined, concatenate cmdline */ + #if defined(CONFIG_BOOTPARAM) + /* Add the whitespace separator */ + command_line[strlen(CONFIG_BOOTPARAM_STRING)] = ' '; + /* Parse uboot command line into the rest of the buffer */ + parse_uboot_commandline( + &command_line[(strlen(CONFIG_BOOTPARAM_STRING)+1)], + (sizeof(command_line) - + (strlen(CONFIG_BOOTPARAM_STRING)+1))); + /* Only CONFIG_UBOOT defined, create cmdline */ + #else + parse_uboot_commandline(&command_line[0], sizeof(command_line)); + #endif /* CONFIG_BOOTPARAM */ + command_line[sizeof(command_line) - 1] = 0; +#endif /* CONFIG_UBOOT */ printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); @@ -204,6 +285,13 @@ void __init setup_arch(char **cmdline_p) free_bootmem(memory_start, memory_end - memory_start); reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); +#if defined(CONFIG_UBOOT) && defined(CONFIG_BLK_DEV_INITRD) + if ((initrd_start > 0) && (initrd_start < initrd_end) && + (initrd_end < memory_end)) + reserve_bootmem(initrd_start, initrd_end - initrd_start, + BOOTMEM_DEFAULT); +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ + /* * Get kmalloc into gear. */ diff --git a/arch/m68knommu/platform/coldfire/head.S b/arch/m68knommu/platform/coldfire/head.S index 2b0d73c..4b91aa2 100644 --- a/arch/m68knommu/platform/coldfire/head.S +++ b/arch/m68knommu/platform/coldfire/head.S @@ -106,6 +106,9 @@ .global _ramvec .global _ramstart .global _ramend +#if defined(CONFIG_UBOOT) +.global _init_sp +#endif /*****************************************************************************/ @@ -124,6 +127,10 @@ _ramstart: .long 0 _ramend: .long 0 +#if defined(CONFIG_UBOOT) +_init_sp: +.long 0 +#endif /*****************************************************************************/ @@ -137,6 +144,9 @@ __HEAD _start: nop /* filler */ movew #0x2700, %sr /* no interrupts */ +#if defined(CONFIG_UBOOT) + movel %sp,_init_sp /* save initial stack pointer */ +#endif /* * Do any platform or board specific setup now. Most boards ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) 2009-09-18 17:49 ` [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) Lennart Sorensen @ 2009-09-18 17:54 ` Daniel Walker 2009-10-01 6:28 ` [uClinux-dev] " Greg Ungerer 1 sibling, 0 replies; 6+ messages in thread From: Daniel Walker @ 2009-09-18 17:54 UTC (permalink / raw) To: Lennart Sorensen; +Cc: linux-kernel, Greg Ungerer, uclinux-dev On Fri, 2009-09-18 at 13:49 -0400, Lennart Sorensen wrote: > On Fri, Sep 18, 2009 at 09:39:04AM -0700, Daniel Walker wrote: > > You have a couple of various checkpatch errors in this patch. We use > > scripts/checkpatch.pl to check for code style issues. Could you run that > > on your patch and fix any errors it finds? A couple are whitespace > > related and you can use scripts/cleanpatch or scripts/cleanfile to > > remove whitespace (so I hear. I've never run those scripts personally) > > Oh dear. I guess the original patch was a bit messy then. OK here we > go again with a checkpatch approved patch. Much better, thanks for doing that.. Daniel ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [uClinux-dev] [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) 2009-09-18 17:49 ` [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) Lennart Sorensen 2009-09-18 17:54 ` Daniel Walker @ 2009-10-01 6:28 ` Greg Ungerer 2009-10-02 14:32 ` Lennart Sorensen 1 sibling, 1 reply; 6+ messages in thread From: Greg Ungerer @ 2009-10-01 6:28 UTC (permalink / raw) To: uClinux development list; +Cc: Daniel Walker, linux-kernel, Greg Ungerer Hi Lennart, Lennart Sorensen wrote: > On Fri, Sep 18, 2009 at 09:39:04AM -0700, Daniel Walker wrote: >> You have a couple of various checkpatch errors in this patch. We use >> scripts/checkpatch.pl to check for code style issues. Could you run that >> on your patch and fix any errors it finds? A couple are whitespace >> related and you can use scripts/cleanpatch or scripts/cleanfile to >> remove whitespace (so I hear. I've never run those scripts personally) > > Oh dear. I guess the original patch was a bit messy then. OK here we > go again with a checkpatch approved patch. > > --- > > This patch adds m68knommu support for getting the kernel command line > arguments from uboot, including the passing of an initrd image from uboot. > > We use this on a 5270/5271 based board, and have used it on the 5271evb > development board. It is based on a patch found in the linux-2.6-denx > git tree, although that tree seems to have had lots of other changes > since which are not in the main Linus kernel. I believe this will work > on all coldfires, although other m68knommu might be missing the _init_sp > stuff in head.S as far as I can tell. I only have the coldfire to > test on. > > Signed-off-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca> Looks ok to me. I'll go ahead and apply it to the for-next m68knommu git tree. Regards Greg > diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig > index e2201b9..064f591 100644 > --- a/arch/m68knommu/Kconfig > +++ b/arch/m68knommu/Kconfig > @@ -533,6 +533,13 @@ config AVNET > default y > depends on (AVNET5282) > > +config UBOOT > + bool "Support for U-Boot command line parameters" > + help > + If you say Y here kernel will try to collect command > + line parameters from the initial u-boot stack. > + default n > + > config 4KSTACKS > bool "Use 4Kb for kernel stacks instead of 8Kb" > default y > diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c > index 5c2bb3e..ba92b90 100644 > --- a/arch/m68knommu/kernel/setup.c > +++ b/arch/m68knommu/kernel/setup.c > @@ -29,6 +29,8 @@ > #include <linux/bootmem.h> > #include <linux/seq_file.h> > #include <linux/init.h> > +#include <linux/initrd.h> > +#include <linux/root_dev.h> > > #include <asm/setup.h> > #include <asm/irq.h> > @@ -52,7 +54,6 @@ void (*mach_reset)(void); > void (*mach_halt)(void); > void (*mach_power_off)(void); > > - > #ifdef CONFIG_M68000 > #define CPU "MC68000" > #endif > @@ -111,6 +112,69 @@ void (*mach_power_off)(void); > extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; > extern int _ramstart, _ramend; > > +#if defined(CONFIG_UBOOT) > +/* > + * parse_uboot_commandline > + * > + * Copies u-boot commandline arguments and store them in the proper linux > + * variables. > + * > + * Assumes: > + * _init_sp global contains the address in the stack pointer when the > + * kernel starts (see head.S::_start) > + * > + * U-Boot calling convention: > + * (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end); > + * > + * _init_sp can be parsed as such > + * > + * _init_sp+00 = u-boot cmd after jsr into kernel (skip) > + * _init_sp+04 = &kernel board_info (residual data) > + * _init_sp+08 = &initrd_start > + * _init_sp+12 = &initrd_end > + * _init_sp+16 = &cmd_start > + * _init_sp+20 = &cmd_end > + * > + * This also assumes that the memory locations pointed to are still > + * unmodified. U-boot places them near the end of external SDRAM. > + * > + * Argument(s): > + * commandp = the linux commandline arg container to fill. > + * size = the sizeof commandp. > + * > + * Returns: > + */ > +void parse_uboot_commandline(char *commandp, int size) > +{ > + extern unsigned long _init_sp; > + unsigned long *sp; > + unsigned long uboot_kbd; > + unsigned long uboot_initrd_start, uboot_initrd_end; > + unsigned long uboot_cmd_start, uboot_cmd_end; > + > + > + sp = (unsigned long *)_init_sp; > + uboot_kbd = sp[1]; > + uboot_initrd_start = sp[2]; > + uboot_initrd_end = sp[3]; > + uboot_cmd_start = sp[4]; > + uboot_cmd_end = sp[5]; > + > + if (uboot_cmd_start && uboot_cmd_end) > + strncpy(commandp, (const char *)uboot_cmd_start, size); > +#if defined(CONFIG_BLK_DEV_INITRD) > + if (uboot_initrd_start && uboot_initrd_end && > + (uboot_initrd_end > uboot_initrd_start)) { > + initrd_start = uboot_initrd_start; > + initrd_end = uboot_initrd_end; > + ROOT_DEV = Root_RAM0; > + printk(KERN_INFO "initrd at 0x%lx:0x%lx\n", > + initrd_start, initrd_end); > + } > +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ > +} > +#endif /* #if defined(CONFIG_UBOOT) */ > + > void __init setup_arch(char **cmdline_p) > { > int bootmap_size; > @@ -128,7 +192,24 @@ void __init setup_arch(char **cmdline_p) > #if defined(CONFIG_BOOTPARAM) > strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); > command_line[sizeof(command_line) - 1] = 0; > -#endif > +#endif /* CONFIG_BOOTPARAM */ > + > +#if defined(CONFIG_UBOOT) > + /* CONFIG_UBOOT and CONFIG_BOOTPARAM defined, concatenate cmdline */ > + #if defined(CONFIG_BOOTPARAM) > + /* Add the whitespace separator */ > + command_line[strlen(CONFIG_BOOTPARAM_STRING)] = ' '; > + /* Parse uboot command line into the rest of the buffer */ > + parse_uboot_commandline( > + &command_line[(strlen(CONFIG_BOOTPARAM_STRING)+1)], > + (sizeof(command_line) - > + (strlen(CONFIG_BOOTPARAM_STRING)+1))); > + /* Only CONFIG_UBOOT defined, create cmdline */ > + #else > + parse_uboot_commandline(&command_line[0], sizeof(command_line)); > + #endif /* CONFIG_BOOTPARAM */ > + command_line[sizeof(command_line) - 1] = 0; > +#endif /* CONFIG_UBOOT */ > > printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); > > @@ -204,6 +285,13 @@ void __init setup_arch(char **cmdline_p) > free_bootmem(memory_start, memory_end - memory_start); > reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); > > +#if defined(CONFIG_UBOOT) && defined(CONFIG_BLK_DEV_INITRD) > + if ((initrd_start > 0) && (initrd_start < initrd_end) && > + (initrd_end < memory_end)) > + reserve_bootmem(initrd_start, initrd_end - initrd_start, > + BOOTMEM_DEFAULT); > +#endif /* if defined(CONFIG_BLK_DEV_INITRD) */ > + > /* > * Get kmalloc into gear. > */ > diff --git a/arch/m68knommu/platform/coldfire/head.S b/arch/m68knommu/platform/coldfire/head.S > index 2b0d73c..4b91aa2 100644 > --- a/arch/m68knommu/platform/coldfire/head.S > +++ b/arch/m68knommu/platform/coldfire/head.S > @@ -106,6 +106,9 @@ > .global _ramvec > .global _ramstart > .global _ramend > +#if defined(CONFIG_UBOOT) > +.global _init_sp > +#endif > > /*****************************************************************************/ > > @@ -124,6 +127,10 @@ _ramstart: > .long 0 > _ramend: > .long 0 > +#if defined(CONFIG_UBOOT) > +_init_sp: > +.long 0 > +#endif > > /*****************************************************************************/ > > @@ -137,6 +144,9 @@ __HEAD > _start: > nop /* filler */ > movew #0x2700, %sr /* no interrupts */ > +#if defined(CONFIG_UBOOT) > + movel %sp,_init_sp /* save initial stack pointer */ > +#endif > > /* > * Do any platform or board specific setup now. Most boards > _______________________________________________ > uClinux-dev mailing list > uClinux-dev@uclinux.org > http://mailman.uclinux.org/mailman/listinfo/uclinux-dev > This message was resent by uclinux-dev@uclinux.org > To unsubscribe see: > http://mailman.uclinux.org/mailman/options/uclinux-dev > -- ------------------------------------------------------------------------ Greg Ungerer -- Principal Engineer EMAIL: gerg@snapgear.com SnapGear Group, McAfee PHONE: +61 7 3435 2888 825 Stanley St, FAX: +61 7 3891 3630 Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [uClinux-dev] [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) 2009-10-01 6:28 ` [uClinux-dev] " Greg Ungerer @ 2009-10-02 14:32 ` Lennart Sorensen 0 siblings, 0 replies; 6+ messages in thread From: Lennart Sorensen @ 2009-10-02 14:32 UTC (permalink / raw) To: uClinux development list; +Cc: Daniel Walker, linux-kernel, Greg Ungerer On Thu, Oct 01, 2009 at 04:28:37PM +1000, Greg Ungerer wrote: > Looks ok to me. I'll go ahead and apply it to the for-next > m68knommu git tree. Great. One less patch for me to keep applying. -- Len Sorensen ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-10-02 14:32 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-09-18 16:27 [PATCH] Add uboot commandline argument passing support to m68knommu Lennart Sorensen 2009-09-18 16:39 ` Daniel Walker 2009-09-18 17:49 ` [PATCH] Add uboot commandline argument passing support to m68knommu (Try #2) Lennart Sorensen 2009-09-18 17:54 ` Daniel Walker 2009-10-01 6:28 ` [uClinux-dev] " Greg Ungerer 2009-10-02 14:32 ` Lennart Sorensen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox