diff options
author | Mike Westerhof <mwester@dls.net> | 2007-02-15 06:53:35 +0000 |
---|---|---|
committer | Mike Westerhof <mwester@dls.net> | 2007-02-15 06:53:35 +0000 |
commit | d31aa0829942777aadf63719508902cf2a5bf1f0 (patch) | |
tree | e286ced0a7a4f2f81a22264e16d826cf29c89728 | |
parent | 95785b5abe1a39b33a613cb1ccf00cbdcb16d65f (diff) |
arm-kernel-shim: Update DSM-G600 kernel shim to supply a default cmline,
if the cmdline passed in from the bootloader is empty or missing.
-rw-r--r-- | packages/arm-kernel-shim/arm-kernel-shim_1.3.bb | 3 | ||||
-rw-r--r-- | packages/arm-kernel-shim/files/cmdline_if_none.patch | 45 | ||||
-rw-r--r-- | packages/arm-kernel-shim/files/config-dsmg600.h | 7 |
3 files changed, 52 insertions, 3 deletions
diff --git a/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb b/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb index 0c9ad35235..4014d9e866 100644 --- a/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb +++ b/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb @@ -3,12 +3,13 @@ SECTION = "" PRIORITY = "optional" HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader" LICENSE = "GPL" -PR = "r3" +PR = "r4" COMPATIBLE_MACHINE = "(ixp4xx|nslu2)" SRC_URI = "ftp://ftp.buici.com/pub/arm/arm-kernel-shim/arm-kernel-shim-${PV}.tar.gz \ file://passthrough-atags.patch;patch=1 \ + file://cmdline_if_none.patch;patch=1 \ file://config-nslu2.h \ file://config-nas100d.h \ file://config-dsmg600.h \ diff --git a/packages/arm-kernel-shim/files/cmdline_if_none.patch b/packages/arm-kernel-shim/files/cmdline_if_none.patch new file mode 100644 index 0000000000..460f7be090 --- /dev/null +++ b/packages/arm-kernel-shim/files/cmdline_if_none.patch @@ -0,0 +1,45 @@ +--- arm-kernel-shim-1.3/main.c.orig 2007-02-14 19:05:35.000000000 -0600 ++++ arm-kernel-shim-1.3/main.c 2007-02-14 22:48:06.000000000 -0600 +@@ -153,6 +153,42 @@ + p->hdr.tag = ATAG_NONE; + p->hdr.size = 0; + ++#else ++ ++#ifdef CMDLINE_IF_NONE ++ ++ /* Walk over the ATAG list, we need to find the end of the list. ++ * If we find a command line tag, stash away the pointer to the ++ * actual command line itself. Note that the implementation ++ * below assumes a single ATAG_CMDLINE passed in from the ++ * bootloader, which may not be a good assumption in all cases. ++ */ ++ { ++ char *c = 0; ++ for_each_tag(p, (struct tag*) PHYS_PARAMS) ++ if (p->hdr.tag == ATAG_CMDLINE) c = p->u.cmdline.cmdline; ++ ++ /* p -> final tag (ATAG_NONE), and c -> command line if found */ ++ /* if no ATAG_CMDLINE, or command line is empty, add the default one. */ ++ ++ if ((c == 0) || (*c == 0)) { ++ p->hdr.tag = ATAG_CMDLINE; ++ p->hdr.size = tag_size (tag_cmdline) ++ + (sizeof (cmdline)+3)/4 - 1; ++ { ++ const char* sz = cmdline + offset; ++ int i; ++ for (i = 0; i < sizeof (cmdline); ++i) ++ p->u.cmdline.cmdline[i] = sz[i]; ++ } ++ p = tag_next (p); ++ p->hdr.tag = ATAG_NONE; ++ p->hdr.size = 0; ++ } ++ } ++ ++#endif ++ + #endif + + /* Pass control to the kernel */ diff --git a/packages/arm-kernel-shim/files/config-dsmg600.h b/packages/arm-kernel-shim/files/config-dsmg600.h index 5f90fb424d..3203052d51 100644 --- a/packages/arm-kernel-shim/files/config-dsmg600.h +++ b/packages/arm-kernel-shim/files/config-dsmg600.h @@ -22,14 +22,17 @@ //#define RAM_BANK1_START 0xd0000000 //#define RAM_BANK1_LENGTH 0x10000000 -//#define COMMANDLINE\ -// "init=/linuxrc root=/dev/mtdblock2 rootfstype=jffs2 rw noirqdebug console=ttyS0,115200n8" +#define COMMANDLINE \ + "init=/linuxrc root=/dev/mtdblock2 rootfstype=jffs2 rw noirqdebug console=ttyS0,115200n8" #define MACH_TYPE 964 /* The DSM-G600 RedBoot sets up the ATAGs correctly */ #define PASSTHROUGH_ATAGS +/* but if the command line passed in is empty, use the default above. */ +#define CMDLINE_IF_NONE + /* Uncomment one of these if you need to switch the CPU into a specific mode. */ //#define FORCE_LITTLEENDIAN |