From: Tim R. <tim...@us...> - 2002-02-27 03:28:09
|
Update of /cvsroot/blob/blob/src/blob In directory usw-pr-cvs1:/tmp/cvs-serv23058/src/blob Modified Files: linux.c main.c Log Message: don't load ramdisk if it won't fit. Use ramdisk from flash if not downloaded. Index: linux.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/linux.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- linux.c 8 Feb 2002 12:55:16 -0000 1.9 +++ linux.c 27 Feb 2002 03:28:05 -0000 1.10 @@ -105,7 +105,7 @@ params->u.mem.start = memory_map[i].start; params->u.mem.size = memory_map[i].len; - + params = tag_next(params); } #if defined( NEPONSET ) @@ -128,8 +128,8 @@ params->u.cmdline.cmdline[0] = '\0'; /* copy default commandline from parameter block */ - if(blob_status.cmdline[0] != '\0') - strlcpy(params->u.cmdline.cmdline, blob_status.cmdline, + if(blob_status.cmdline[0] != '\0') + strlcpy(params->u.cmdline.cmdline, blob_status.cmdline, COMMAND_LINE_SIZE); /* copy commandline */ @@ -141,7 +141,7 @@ p += strlen(p); *p++ = ' '; } - + p--; *p = '\0'; @@ -154,9 +154,9 @@ if(strlen(params->u.cmdline.cmdline) > 0) { params->hdr.tag = ATAG_CMDLINE; - params->hdr.size = (sizeof(struct tag_header) + + params->hdr.size = (sizeof(struct tag_header) + strlen(params->u.cmdline.cmdline) + 1 + 4) >> 2; - + params = tag_next(params); } } @@ -165,14 +165,19 @@ static void setup_initrd_tag(void) { /* an ATAG_INITRD node tells the kernel where the compressed - * ramdisk can be found. ATAG_RDIMG is a better name, actually. + * ramdisk can be found. ATAG_RDIMG is a better name, actually. */ params->hdr.tag = ATAG_INITRD; params->hdr.size = tag_size(tag_initrd); - - params->u.initrd.start = RAMDISK_RAM_BASE; - params->u.initrd.size = RAMDISK_FLASH_LEN; - + + if (blob_status.ramdiskType = fromDownload) { + params->u.initrd.start = RAMDISK_RAM_BASE; + params->u.initrd.size = blob_status.ramdiskSize; + } else { + params->u.initrd.start = RAMDISK_FLASH_BASE; + params->u.initrd.size = RAMDISK_FLASH_LEN; + } + params = tag_next(params); } @@ -180,15 +185,15 @@ static void setup_ramdisk_tag(void) { /* an ATAG_RAMDISK node tells the kernel how large the - * decompressed ramdisk will become. + * decompressed ramdisk will become. */ params->hdr.tag = ATAG_RAMDISK; params->hdr.size = tag_size(tag_ramdisk); - + params->u.ramdisk.start = 0; params->u.ramdisk.size = RAMDISK_SIZE; params->u.ramdisk.flags = 1; /* automatically load ramdisk */ - + params = tag_next(params); } Index: main.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/main.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- main.c 27 Feb 2002 01:44:55 -0000 1.37 +++ main.c 27 Feb 2002 03:28:05 -0000 1.38 @@ -642,6 +642,7 @@ blob_status.kernelSize = 0; blob_status.kernelType = fromFlash; printf("Loading kernel from flash "); +#ifndef NOT_ENOUGH_RAM } else if(strncmp(what, "ramdisk", 8) == 0) { dst = (u32 *)RAMDISK_RAM_BASE; src = (u32 *)RAMDISK_FLASH_BASE; @@ -649,6 +650,7 @@ blob_status.ramdiskSize = 0; blob_status.ramdiskType = fromFlash; printf("Loading ramdisk from flash "); +#endif } else { printerror(EINVAL, what); return 0; |