* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem
@ 2003-03-04 14:47 Petter Larsen
2003-03-04 15:42 ` Kenneth Johansson
` (2 more replies)
0 siblings, 3 replies; 28+ messages in thread
From: Petter Larsen @ 2003-03-04 14:47 UTC (permalink / raw)
To: u-boot
Hello
We have enabled JFFS2 in PPCBoot 2.0.
We can then for example use "fsload" to load a file into memory. But how
can we use this feature if we wont to boot the kernel, lying in this
filesystem, with "bootm".
We use a AMD flash device. In the kernel we have enabled the CFI in the
MTD options, and enabled JFFS2.
Best regards
Petter Larsen
^ permalink raw reply [flat|nested] 28+ messages in thread* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 14:47 [U-Boot-Users] Boot the kernel from a JFFS2 filesystem Petter Larsen @ 2003-03-04 15:42 ` Kenneth Johansson 2003-03-04 16:50 ` Petter Larsen 2003-03-04 15:43 ` Wolfgang Denk 2003-03-04 15:51 ` Robert Schwebel 2 siblings, 1 reply; 28+ messages in thread From: Kenneth Johansson @ 2003-03-04 15:42 UTC (permalink / raw) To: u-boot On Tue, 2003-03-04 at 15:47, Petter Larsen wrote: > Hello > > We have enabled JFFS2 in PPCBoot 2.0. > > We can then for example use "fsload" to load a file into memory. But how > can we use this feature if we wont to boot the kernel, lying in this > filesystem, with "bootm". > > We use a AMD flash device. In the kernel we have enabled the CFI in the > MTD options, and enabled JFFS2. > I'm confused. you load the kernel into memory with fsload then you start that kernel with bootm. What's the problem? -- Kenneth Johansson Ericsson AB Tel: +46 8 719 70 20 Tellusborgsv?gen 90 Fax: +46 8 719 29 45 126 25 Stockholm ken at switchboard.ericsson.se ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 15:42 ` Kenneth Johansson @ 2003-03-04 16:50 ` Petter Larsen 2003-03-04 16:59 ` Kenneth Johansson 2003-03-04 17:01 ` Robert Schwebel 0 siblings, 2 replies; 28+ messages in thread From: Petter Larsen @ 2003-03-04 16:50 UTC (permalink / raw) To: u-boot Hello I got it. I was just to simple:-) But is it possible to boot it directly from the filesystem and not load it into memory first? Best regards Petter Larsen moreCom as On Tue, 2003-03-04 at 16:42, Kenneth Johansson wrote: > On Tue, 2003-03-04 at 15:47, Petter Larsen wrote: > > Hello > > > > We have enabled JFFS2 in PPCBoot 2.0. > > > > We can then for example use "fsload" to load a file into memory. But how > > can we use this feature if we wont to boot the kernel, lying in this > > filesystem, with "bootm". > > > > We use a AMD flash device. In the kernel we have enabled the CFI in the > > MTD options, and enabled JFFS2. > > > > I'm confused. you load the kernel into memory with fsload then you start > that kernel with bootm. What's the problem? ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 16:50 ` Petter Larsen @ 2003-03-04 16:59 ` Kenneth Johansson 2003-03-04 18:05 ` Petter Larsen 2003-03-04 17:01 ` Robert Schwebel 1 sibling, 1 reply; 28+ messages in thread From: Kenneth Johansson @ 2003-03-04 16:59 UTC (permalink / raw) To: u-boot On Tue, 2003-03-04 at 17:50, Petter Larsen wrote: > Hello > > I got it. I was just to simple:-) > But is it possible to boot it directly from the filesystem and not load > it into memory first? No the file is not a continuous block of data so it can't be done. -- Kenneth Johansson Ericsson AB Tel: +46 8 719 70 20 Tellusborgsv?gen 90 Fax: +46 8 719 29 45 126 25 Stockholm ken at switchboard.ericsson.se ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 16:59 ` Kenneth Johansson @ 2003-03-04 18:05 ` Petter Larsen 2003-03-04 21:25 ` Wolfgang Denk 0 siblings, 1 reply; 28+ messages in thread From: Petter Larsen @ 2003-03-04 18:05 UTC (permalink / raw) To: u-boot Is there a similar method if I use Compact Flash and a more generic filesystem like ext2, ext3 or Reiserfs Best regards Petter Larsen moreCom as On Tue, 2003-03-04 at 17:59, Kenneth Johansson wrote: > On Tue, 2003-03-04 at 17:50, Petter Larsen wrote: > > Hello > > > > I got it. I was just to simple:-) > > But is it possible to boot it directly from the filesystem and not load > > it into memory first? > > No the file is not a continuous block of data so it can't be done. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 18:05 ` Petter Larsen @ 2003-03-04 21:25 ` Wolfgang Denk 0 siblings, 0 replies; 28+ messages in thread From: Wolfgang Denk @ 2003-03-04 21:25 UTC (permalink / raw) To: u-boot In message <1046801107.1192.34.camel@pla> you wrote: > > Is there a similar method if I use Compact Flash and a more generic Yes, of course. You did read the DPLG? It shows in detail how to use the "diskboot" command to load an image from a partition on any IDE device (harddisk, CompactFlash, memory Stick, ...). You can then use "bootm" to boot it - except that "diskboot" knows and pays regard to the "autostart" environment variable. Please read the docs. > filesystem like ext2, ext3 or Reiserfs No. Not unless you implement some filesystem code (but then please do it as a standalone program, something like a second stage bootstrap loader; I don't like the way how the JFFS2 code is egrafted onto the other U-Boot code - it breakds the design philosophy). Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de Little known fact about Middle Earth: The Hobbits had a very sophi- sticated computer network! It was a Tolkien Ring... ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 16:50 ` Petter Larsen 2003-03-04 16:59 ` Kenneth Johansson @ 2003-03-04 17:01 ` Robert Schwebel 2003-03-04 17:39 ` Wolfgang Denk 1 sibling, 1 reply; 28+ messages in thread From: Robert Schwebel @ 2003-03-04 17:01 UTC (permalink / raw) To: u-boot On Tue, Mar 04, 2003 at 05:50:52PM +0100, Petter Larsen wrote: > I got it. I was just to simple:-) But is it possible to boot it > directly from the filesystem and not load it into memory first? What's the problem with two commands instead of one? You have to load the kernel into memory anyway. Robert -- Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de Pengutronix - Linux Solutions for Science and Industry Braunschweiger Str. 79, 31134 Hildesheim, Germany Handelsregister: Amtsgericht Hildesheim, HRA 2686 Phone: +49-5121-28619-0 | Fax: +49-5121-28619-4 ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 17:01 ` Robert Schwebel @ 2003-03-04 17:39 ` Wolfgang Denk 2003-03-04 17:57 ` Joakim Tjernlund 0 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-04 17:39 UTC (permalink / raw) To: u-boot In message <20030304170121.GL3593@pengutronix.de> you wrote: > > > I got it. I was just to simple:-) But is it possible to boot it > > directly from the filesystem and not load it into memory first? > > What's the problem with two commands instead of one? You have to load > the kernel into memory anyway. Well, having to deal a lot with customers who want to minimize boot times I can see the argument that you have an additional memcpy here - but then, when boot time matters, you should not use JFFS2 to store the kernel image in the first place. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de The biggest difference between time and space is that you can't reuse time. - Merrick Furst ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 17:39 ` Wolfgang Denk @ 2003-03-04 17:57 ` Joakim Tjernlund 2003-03-04 21:13 ` Wolfgang Denk 2003-03-04 21:15 ` Wolfgang Denk 0 siblings, 2 replies; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-04 17:57 UTC (permalink / raw) To: u-boot > In message <20030304170121.GL3593@pengutronix.de> you wrote: > > > > > I got it. I was just to simple:-) But is it possible to boot it > > > directly from the filesystem and not load it into memory first? > > > > What's the problem with two commands instead of one? You have to load > > the kernel into memory anyway. > > Well, having to deal a lot with customers who want to minimize boot > times I can see the argument that you have an additional memcpy here > - but then, when boot time matters, you should not use JFFS2 to store > the kernel image in the first place. Optimizing crc32 will probably help a bit. I have pushed some optimiziations into linux 2.5(lib/crc32.c & friends) that is much faster. I also moved these into my ppcboot, 1.05. If someone wants, I can send my ppc/crc32.c file. It should be very easy to move these into u-boot. Jocke ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 17:57 ` Joakim Tjernlund @ 2003-03-04 21:13 ` Wolfgang Denk 2003-03-04 21:31 ` Joakim Tjernlund 2003-03-04 21:15 ` Wolfgang Denk 1 sibling, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-04 21:13 UTC (permalink / raw) To: u-boot In message <IGEFJKJNHJDCBKALBJLLMEMMFKAA.joakim.tjernlund@lumentis.se> you wrote: > > > Well, having to deal a lot with customers who want to minimize boot > > times I can see the argument that you have an additional memcpy here > > - but then, when boot time matters, you should not use JFFS2 to store > > the kernel image in the first place. > > Optimizing crc32 will probably help a bit. I have pushed some optimiziations into No. We're not talking about optimizing a few percent. When you have to have the application up and running within 5 or even 3 seconds after power-on you have to pay some price. You cannot afford to use compression, and even a highly optimized CRC over an uncompressed kernel image takes nearly as long as the uncompress would. I think you cannot beat the speed of loading an uncompressed kernel image from flash (raw memory, no filesystem), with CRC verification turned off. If security plays a role, you can (and will have to) verify the in-flash image later, when you are up and running :-) ] Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de Never worry about theory as long as the machinery does what it's supposed to do. - R. A. Heinlein ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 21:13 ` Wolfgang Denk @ 2003-03-04 21:31 ` Joakim Tjernlund 2003-03-04 21:58 ` Wolfgang Denk 0 siblings, 1 reply; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-04 21:31 UTC (permalink / raw) To: u-boot > No. We're not talking about optimizing a few percent. When you have > to have the application up and running within 5 or even 3 seconds > after power-on you have to pay some price. You cannot afford to use > compression, and even a highly optimized CRC over an uncompressed > kernel image takes nearly as long as the uncompress would. > > I think you cannot beat the speed of loading an uncompressed kernel > image from flash (raw memory, no filesystem), with CRC verification > turned off. If security plays a role, you can (and will have to) > verify the in-flash image later, when you are up and running :-) ] Of course, but it's always nice to save a little time even if you can afford a long boot time. You can probly also save some decompression time if you choose a lower compression level(gzip -3) especially if port current zlib impl. in linux which uses precompted lookup tables. > ...ummmm - please do'nt get me wrong: of course I do appreciate any > optimizations you may have for the CRC32 code. Just send a patch > against the current source. That was/is my plan, but since I am still in ppcboot and will be for some time I offer to send it as is if someone is in a hurry and willing to do the integration with u-boot. Just let me know. Jocke ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 21:31 ` Joakim Tjernlund @ 2003-03-04 21:58 ` Wolfgang Denk 2003-03-04 22:08 ` Joakim Tjernlund 0 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-04 21:58 UTC (permalink / raw) To: u-boot In message <003501c2e295$7f8cbed0$020120b0@jockeXP> you wrote: > > That was/is my plan, but since I am still in ppcboot and will be for some time I > offer to send it as is if someone is in a hurry and willing to do the integration with > u-boot. Just let me know. The crc32.c in the top-of-tree version of U-Boot and that in PPCBoot are identical; I think the last change to that file was before PPCBoot-0.4.4 (July 2000). A patch against any semi-recent version will do. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de When a program is being tested, it is too late to make design changes. -- Geoffrey James, "The Tao of Programming" ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 21:58 ` Wolfgang Denk @ 2003-03-04 22:08 ` Joakim Tjernlund 2003-03-04 22:25 ` Wolfgang Denk 0 siblings, 1 reply; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-04 22:08 UTC (permalink / raw) To: u-boot > > > > That was/is my plan, but since I am still in ppcboot and will be for some time I > > offer to send it as is if someone is in a hurry and willing to do the integration with > > u-boot. Just let me know. > > The crc32.c in the top-of-tree version of U-Boot and that in PPCBoot > are identical; I think the last change to that file was before > PPCBoot-0.4.4 (July 2000). > > A patch against any semi-recent version will do. I will have a look, but I can't test it in u-boot so you will have to do it, OK? Jocke ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 22:08 ` Joakim Tjernlund @ 2003-03-04 22:25 ` Wolfgang Denk 2003-03-04 23:29 ` Joakim Tjernlund 0 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-04 22:25 UTC (permalink / raw) To: u-boot In message <004701c2e29a$a280b4a0$020120b0@jockeXP> you wrote: > > I will have a look, but I can't test it in u-boot so you will have to do it, OK? Sure. I hope the code is not much bigger, though. That might be a killing point. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de "Everybody is talking about the weather but nobody does anything about it." - Mark Twain ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 22:25 ` Wolfgang Denk @ 2003-03-04 23:29 ` Joakim Tjernlund 2003-03-05 22:37 ` Wolfgang Denk 0 siblings, 1 reply; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-04 23:29 UTC (permalink / raw) To: u-boot > In message <004701c2e29a$a280b4a0$020120b0@jockeXP> you wrote: > > > > I will have a look, but I can't test it in u-boot so you will have to do it, OK? > > Sure. I hope the code is not much bigger, though. That might be a > killing point. OK, here it is. It compiles, but generates alot of warnings. I had made some clenups as well. Don't think the size is to bad but judge for your self Jocke --- lib_generic/crc32.c.old Tue Mar 4 23:39:48 2003 +++ lib_generic/crc32.c Wed Mar 5 00:00:14 2003 @@ -11,18 +11,14 @@ #ifndef USE_HOSTCC /* Shut down "ANSI does not permit..." warnings */ #include <common.h> /* to get command definitions like CFG_CMD_JFFS2 */ #endif - -#include "zlib.h" - -#define local static -#define ZEXPORT /* empty */ -unsigned long crc32 (unsigned long, const unsigned char *, unsigned int); +#include "asm/types.h" +#include "asm/byteorder.h" #ifdef DYNAMIC_CRC_TABLE -local int crc_table_empty = 1; -local uLongf crc_table[256]; -local void make_crc_table OF((void)); +static int crc_table_empty = 1; +static __u32 crc_table[256]; +static void make_crc_table (void); /* Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: @@ -48,13 +44,13 @@ local void make_crc_table OF((void)); the information needed to generate CRC's on data a byte at a time for all combinations of CRC register values and incoming bytes. */ -local void make_crc_table() +static void make_crc_table() { - uLong c; + __u32 c; int n, k; - uLong poly; /* polynomial exclusive-or pattern */ + __u32 poly; /* polynomial exclusive-or pattern */ /* terms of polynomial defining this crc (except x^32): */ - static const Byte p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + static const __u8 p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; /* make exclusive-or pattern from polynomial (0xedb88320L) */ poly = 0L; @@ -63,10 +59,10 @@ local void make_crc_table() for (n = 0; n < 256; n++) { - c = (uLong)n; + c = (__u32)n; for (k = 0; k < 8; k++) c = c & 1 ? poly ^ (c >> 1) : c >> 1; - crc_table[n] = c; + crc_table[n] = __cpu_to_le32(c); } crc_table_empty = 0; } @@ -74,59 +70,60 @@ local void make_crc_table() /* ======================================================================== * Table of CRC-32's of all single-byte values (made by make_crc_table) */ -local const uLongf crc_table[256] = { - 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, - 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, - 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, - 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, - 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, - 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, - 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, - 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, - 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, - 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, - 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, - 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, - 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, - 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, - 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, - 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, - 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, - 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, - 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, - 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, - 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, - 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, - 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, - 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, - 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, - 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, - 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, - 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, - 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, - 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, - 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, - 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, - 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, - 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, - 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, - 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, - 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, - 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, - 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, - 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, - 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, - 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, - 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, - 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, - 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, - 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, - 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, - 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, - 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, - 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, - 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, - 0x2d02ef8dL +#define tole(x) __constant_cpu_to_le32(x) +static const __u32 crc_table[256] = { + tole(0x00000000L), tole(0x77073096L), tole(0xee0e612cL), tole(0x990951baL), tole(0x076dc419L), + tole(0x706af48fL), tole(0xe963a535L), tole(0x9e6495a3L), tole(0x0edb8832L), tole(0x79dcb8a4L), + tole(0xe0d5e91eL), tole(0x97d2d988L), tole(0x09b64c2bL), tole(0x7eb17cbdL), tole(0xe7b82d07L), + tole(0x90bf1d91L), tole(0x1db71064L), tole(0x6ab020f2L), tole(0xf3b97148L), tole(0x84be41deL), + tole(0x1adad47dL), tole(0x6ddde4ebL), tole(0xf4d4b551L), tole(0x83d385c7L), tole(0x136c9856L), + tole(0x646ba8c0L), tole(0xfd62f97aL), tole(0x8a65c9ecL), tole(0x14015c4fL), tole(0x63066cd9L), + tole(0xfa0f3d63L), tole(0x8d080df5L), tole(0x3b6e20c8L), tole(0x4c69105eL), tole(0xd56041e4L), + tole(0xa2677172L), tole(0x3c03e4d1L), tole(0x4b04d447L), tole(0xd20d85fdL), tole(0xa50ab56bL), + tole(0x35b5a8faL), tole(0x42b2986cL), tole(0xdbbbc9d6L), tole(0xacbcf940L), tole(0x32d86ce3L), + tole(0x45df5c75L), tole(0xdcd60dcfL), tole(0xabd13d59L), tole(0x26d930acL), tole(0x51de003aL), + tole(0xc8d75180L), tole(0xbfd06116L), tole(0x21b4f4b5L), tole(0x56b3c423L), tole(0xcfba9599L), + tole(0xb8bda50fL), tole(0x2802b89eL), tole(0x5f058808L), tole(0xc60cd9b2L), tole(0xb10be924L), + tole(0x2f6f7c87L), tole(0x58684c11L), tole(0xc1611dabL), tole(0xb6662d3dL), tole(0x76dc4190L), + tole(0x01db7106L), tole(0x98d220bcL), tole(0xefd5102aL), tole(0x71b18589L), tole(0x06b6b51fL), + tole(0x9fbfe4a5L), tole(0xe8b8d433L), tole(0x7807c9a2L), tole(0x0f00f934L), tole(0x9609a88eL), + tole(0xe10e9818L), tole(0x7f6a0dbbL), tole(0x086d3d2dL), tole(0x91646c97L), tole(0xe6635c01L), + tole(0x6b6b51f4L), tole(0x1c6c6162L), tole(0x856530d8L), tole(0xf262004eL), tole(0x6c0695edL), + tole(0x1b01a57bL), tole(0x8208f4c1L), tole(0xf50fc457L), tole(0x65b0d9c6L), tole(0x12b7e950L), + tole(0x8bbeb8eaL), tole(0xfcb9887cL), tole(0x62dd1ddfL), tole(0x15da2d49L), tole(0x8cd37cf3L), + tole(0xfbd44c65L), tole(0x4db26158L), tole(0x3ab551ceL), tole(0xa3bc0074L), tole(0xd4bb30e2L), + tole(0x4adfa541L), tole(0x3dd895d7L), tole(0xa4d1c46dL), tole(0xd3d6f4fbL), tole(0x4369e96aL), + tole(0x346ed9fcL), tole(0xad678846L), tole(0xda60b8d0L), tole(0x44042d73L), tole(0x33031de5L), + tole(0xaa0a4c5fL), tole(0xdd0d7cc9L), tole(0x5005713cL), tole(0x270241aaL), tole(0xbe0b1010L), + tole(0xc90c2086L), tole(0x5768b525L), tole(0x206f85b3L), tole(0xb966d409L), tole(0xce61e49fL), + tole(0x5edef90eL), tole(0x29d9c998L), tole(0xb0d09822L), tole(0xc7d7a8b4L), tole(0x59b33d17L), + tole(0x2eb40d81L), tole(0xb7bd5c3bL), tole(0xc0ba6cadL), tole(0xedb88320L), tole(0x9abfb3b6L), + tole(0x03b6e20cL), tole(0x74b1d29aL), tole(0xead54739L), tole(0x9dd277afL), tole(0x04db2615L), + tole(0x73dc1683L), tole(0xe3630b12L), tole(0x94643b84L), tole(0x0d6d6a3eL), tole(0x7a6a5aa8L), + tole(0xe40ecf0bL), tole(0x9309ff9dL), tole(0x0a00ae27L), tole(0x7d079eb1L), tole(0xf00f9344L), + tole(0x8708a3d2L), tole(0x1e01f268L), tole(0x6906c2feL), tole(0xf762575dL), tole(0x806567cbL), + tole(0x196c3671L), tole(0x6e6b06e7L), tole(0xfed41b76L), tole(0x89d32be0L), tole(0x10da7a5aL), + tole(0x67dd4accL), tole(0xf9b9df6fL), tole(0x8ebeeff9L), tole(0x17b7be43L), tole(0x60b08ed5L), + tole(0xd6d6a3e8L), tole(0xa1d1937eL), tole(0x38d8c2c4L), tole(0x4fdff252L), tole(0xd1bb67f1L), + tole(0xa6bc5767L), tole(0x3fb506ddL), tole(0x48b2364bL), tole(0xd80d2bdaL), tole(0xaf0a1b4cL), + tole(0x36034af6L), tole(0x41047a60L), tole(0xdf60efc3L), tole(0xa867df55L), tole(0x316e8eefL), + tole(0x4669be79L), tole(0xcb61b38cL), tole(0xbc66831aL), tole(0x256fd2a0L), tole(0x5268e236L), + tole(0xcc0c7795L), tole(0xbb0b4703L), tole(0x220216b9L), tole(0x5505262fL), tole(0xc5ba3bbeL), + tole(0xb2bd0b28L), tole(0x2bb45a92L), tole(0x5cb36a04L), tole(0xc2d7ffa7L), tole(0xb5d0cf31L), + tole(0x2cd99e8bL), tole(0x5bdeae1dL), tole(0x9b64c2b0L), tole(0xec63f226L), tole(0x756aa39cL), + tole(0x026d930aL), tole(0x9c0906a9L), tole(0xeb0e363fL), tole(0x72076785L), tole(0x05005713L), + tole(0x95bf4a82L), tole(0xe2b87a14L), tole(0x7bb12baeL), tole(0x0cb61b38L), tole(0x92d28e9bL), + tole(0xe5d5be0dL), tole(0x7cdcefb7L), tole(0x0bdbdf21L), tole(0x86d3d2d4L), tole(0xf1d4e242L), + tole(0x68ddb3f8L), tole(0x1fda836eL), tole(0x81be16cdL), tole(0xf6b9265bL), tole(0x6fb077e1L), + tole(0x18b74777L), tole(0x88085ae6L), tole(0xff0f6a70L), tole(0x66063bcaL), tole(0x11010b5cL), + tole(0x8f659effL), tole(0xf862ae69L), tole(0x616bffd3L), tole(0x166ccf45L), tole(0xa00ae278L), + tole(0xd70dd2eeL), tole(0x4e048354L), tole(0x3903b3c2L), tole(0xa7672661L), tole(0xd06016f7L), + tole(0x4969474dL), tole(0x3e6e77dbL), tole(0xaed16a4aL), tole(0xd9d65adcL), tole(0x40df0b66L), + tole(0x37d83bf0L), tole(0xa9bcae53L), tole(0xdebb9ec5L), tole(0x47b2cf7fL), tole(0x30b5ffe9L), + tole(0xbdbdf21cL), tole(0xcabac28aL), tole(0x53b39330L), tole(0x24b4a3a6L), tole(0xbad03605L), + tole(0xcdd70693L), tole(0x54de5729L), tole(0x23d967bfL), tole(0xb3667a2eL), tole(0xc4614ab8L), + tole(0x5d681b02L), tole(0x2a6f2b94L), tole(0xb40bbe37L), tole(0xc30c8ea1L), tole(0x5a05df1bL), + tole(0x2d02ef8dL) }; #endif @@ -134,42 +131,63 @@ local const uLongf crc_table[256] = { /* ========================================================================= * This function can be used by asm versions of crc32() */ -const uLongf * ZEXPORT get_crc_table() +const __u32 * get_crc_table() { #ifdef DYNAMIC_CRC_TABLE if (crc_table_empty) make_crc_table(); #endif - return (const uLongf *)crc_table; + return (const __u32 *)crc_table; } #endif -/* ========================================================================= */ -#define DO1(buf) crc = crc_table[((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8); -#define DO2(buf) DO1(buf); DO1(buf); -#define DO4(buf) DO2(buf); DO2(buf); -#define DO8(buf) DO4(buf); DO4(buf); - -/* ========================================================================= */ -uLong ZEXPORT crc32(crc, buf, len) - uLong crc; - const Bytef *buf; - uInt len; +# ifdef __LITTLE_ENDIAN +# define DO_CRC(x) crc = tab[ (crc ^ (x)) & 255 ] ^ (crc>>8) +# else +# define DO_CRC(x) crc = tab[ ((crc >> 24) ^ (x)) & 255] ^ (crc<<8) +# endif + +unsigned long crc32(unsigned long crc, const unsigned char *p, unsigned int len) { - if (buf == Z_NULL) return 0L; + const __u32 *b =(__u32 *)p; + const __u32 *tab = crc_table; + + if (!p) return 0L; #ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); + if (crc_table_empty) + make_crc_table(); #endif - crc = crc ^ 0xffffffffL; - while (len >= 8) - { - DO8(buf); - len -= 8; - } - if (len) do { - DO1(buf); - } while (--len); - return crc ^ 0xffffffffL; + crc = __cpu_to_le32(crc ^ 0xffffffffL); + /* Align it */ + if( ((long)b)&3 && len){ + do { + DO_CRC(*((__u8 *)b)++); + } while ((--len) && ((long)b)&3 ); + } + + if(len >= 4){ + /* Load data 32 bits wide, xor data 32 bits wide. */ + __u32 save_len = len & 3; + + len = len >> 2; + --b; /* use pre increment below(*++b) for speed */ + do { + crc ^= *++b; + DO_CRC(0); + DO_CRC(0); + DO_CRC(0); + DO_CRC(0); + } while (--len); + b++; /* point to next byte(s) */ + len = save_len; + } + + /* And the last few bytes */ + if(len){ + do { + DO_CRC(*((__u8 *)b)++); + } while (--len); + } + return __le32_to_cpu(crc) ^ 0xffffffffL; } #if (CONFIG_COMMANDS & CFG_CMD_JFFS2) @@ -177,23 +195,48 @@ uLong ZEXPORT crc32(crc, buf, len) /* No ones complement version. JFFS2 (and other things ?) * don't use ones compliment in their CRC calculations. */ -uLong ZEXPORT crc32_no_comp(uLong crc, const Bytef *buf, uInt len) +unsigned long crc32_no_comp(unsigned long crc, const unsigned char *p, unsigned int len) { - if (buf == Z_NULL) return 0L; + const __u32 *b =(__u32 *)p; + const __u32 *tab = crc_table; + + if (!p) return 0L; #ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); + if (crc_table_empty) + make_crc_table(); #endif - while (len >= 8) - { - DO8(buf); - len -= 8; - } - if (len) do { - DO1(buf); - } while (--len); - - return crc; + crc = __cpu_to_le32(crc); + /* Align it */ + if( ((long)b)&3 && len){ + do { + DO_CRC(*((__u8 *)b)++); + } while ((--len) && ((long)b)&3 ); + } + + if(len >= 4){ + /* Load data 32 bits wide, xor data 32 bits wide. */ + __u32 save_len = len & 3; + + len = len >> 2; + --b; /* use pre increment below(*++b) for speed */ + do { + crc ^= *++b; + DO_CRC(0); + DO_CRC(0); + DO_CRC(0); + DO_CRC(0); + } while (--len); + b++; /* point to next byte(s) */ + len = save_len; + } + + /* And the last few bytes */ + if(len){ + do { + DO_CRC(*((__u8 *)b)++); + } while (--len); + } + return __le32_to_cpu(crc); } #endif /* CFG_CMD_JFFS2 */ ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 23:29 ` Joakim Tjernlund @ 2003-03-05 22:37 ` Wolfgang Denk 2003-03-05 22:52 ` Vladimir Gurevich 0 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-05 22:37 UTC (permalink / raw) To: u-boot In message <IGEFJKJNHJDCBKALBJLLOENAFKAA.joakim.tjernlund@lumentis.se> you wrote: > > In message <004701c2e29a$a280b4a0$020120b0@jockeXP> you wrote: > > > > > > I will have a look, but I can't test it in u-boot so you will have to do it, OK? > > > > Sure. I hope the code is not much bigger, though. That might be a > > killing point. > > OK, here it is. It compiles, but generates alot of warnings. > I had made some clenups as well. > Don't think the size is to bad but judge for your self Sorry, but this does not compile at all for me; the native GCC (when building the tools/ directory) will complain: /tmp/ccRasvph.s: Assembler messages: /tmp/ccRasvph.s:323: Error: no such instruction: `rlwimi %ecx,%eax,24,16,23' /tmp/ccRasvph.s:324: Error: no such instruction: `rlwimi %ecx,%eax,8,8,15' /tmp/ccRasvph.s:325: Error: no such instruction: `rlwimi %ecx,%eax,24,0,7' /tmp/ccRasvph.s:429: Error: no such instruction: `rlwimi %eax,%ecx,24,16,23' /tmp/ccRasvph.s:430: Error: no such instruction: `rlwimi %eax,%ecx,8,8,15' /tmp/ccRasvph.s:431: Error: no such instruction: `rlwimi %eax,%ecx,24,0,7' make[1]: *** [crc32.o] Error 1 This is with gcc version 3.2. Were you able to compile this code? Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de The one who says it cannot be done should never interrupt the one who is doing it. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-05 22:37 ` Wolfgang Denk @ 2003-03-05 22:52 ` Vladimir Gurevich 2003-03-05 23:46 ` Wolfgang Denk 0 siblings, 1 reply; 28+ messages in thread From: Vladimir Gurevich @ 2003-03-05 22:52 UTC (permalink / raw) To: u-boot Hi Wolfgang, Wolfgang Denk wrote: > Sorry, but this does not compile at all for me; the native GCC > (when building the tools/ directory) will complain: > > /tmp/ccRasvph.s: Assembler messages: > /tmp/ccRasvph.s:323: Error: no such instruction: `rlwimi %ecx,%eax,24,16,23' > /tmp/ccRasvph.s:324: Error: no such instruction: `rlwimi %ecx,%eax,8,8,15' > /tmp/ccRasvph.s:325: Error: no such instruction: `rlwimi %ecx,%eax,24,0,7' > /tmp/ccRasvph.s:429: Error: no such instruction: `rlwimi %eax,%ecx,24,16,23' > /tmp/ccRasvph.s:430: Error: no such instruction: `rlwimi %eax,%ecx,8,8,15' > /tmp/ccRasvph.s:431: Error: no such instruction: `rlwimi %eax,%ecx,24,0,7' > make[1]: *** [crc32.o] Error 1 Could it be that your include/asm points to include/asm-ppc and thus you include wrong byteorder.h? These instructions look as PPC implementation of ___arch__swab32 applied to x86 code. Regards, Vladimir Gurevich ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-05 22:52 ` Vladimir Gurevich @ 2003-03-05 23:46 ` Wolfgang Denk 2003-03-06 0:51 ` Vladimir Gurevich 0 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-05 23:46 UTC (permalink / raw) To: u-boot Dear Vladimir, in message <3E667F95.5000308@paulidav.org> you wrote: > > > /tmp/ccRasvph.s: Assembler messages: > > /tmp/ccRasvph.s:323: Error: no such instruction: `rlwimi %ecx,%eax,24,16,23' ... > Could it be that your include/asm points to include/asm-ppc and Of course, as I'm compiling for a PowerPC system. > thus you include wrong byteorder.h? These instructions look as > PPC implementation of ___arch__swab32 applied to x86 code. Right. And this is why I wonder how Jocke compiled this stuff at all in a U-Boot environment. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de "Unix is simple, but it takes a genius to understand the simplicity." - Dennis Ritchie ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-05 23:46 ` Wolfgang Denk @ 2003-03-06 0:51 ` Vladimir Gurevich 2003-03-06 0:56 ` Wolfgang Denk 0 siblings, 1 reply; 28+ messages in thread From: Vladimir Gurevich @ 2003-03-06 0:51 UTC (permalink / raw) To: u-boot Dear Wolfgang, Wolfgang Denk wrote: > Of course, as I'm compiling for a PowerPC system. BUT, when you compile stuff in /tools you use a native compiler, as you mentioned in the previous email, don't you? That points out to a small problem in U-boot (and Linux) include directory structure. Basically, you cannot compile source that include machine-dependent code from include/asm using a native compiler, since asm points to the target-specific asm directory. That means that Jocke's crc32.c file cannot be shared between u-boot code and tools, since it contains machine-specific code. :( Any good ideas on how to avoid that? I guess, Jocke had his /tools compiled long time ago and only tried PPC-specific stuff, that seems to work. Anyway, you two can definitely resolve this. Best regards, Vladimir ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-06 0:51 ` Vladimir Gurevich @ 2003-03-06 0:56 ` Wolfgang Denk 2003-03-06 8:53 ` Joakim Tjernlund 0 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-06 0:56 UTC (permalink / raw) To: u-boot In message <3E669B87.7030302@paulidav.org> you wrote: > > BUT, when you compile stuff in /tools you use a native > compiler, as you mentioned in the previous email, don't you? Right. > I guess, Jocke had his /tools compiled long time ago and only > tried PPC-specific stuff, that seems to work. But I guess he did run a MAKEALL before submitting the patch? > Anyway, you two can definitely resolve this. Maybe, but I'm really short of time at the moment... Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de It would be illogical to kill without reason -- Spock, "Journey to Babel", stardate 3842.4 ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-06 0:56 ` Wolfgang Denk @ 2003-03-06 8:53 ` Joakim Tjernlund 2003-03-06 9:19 ` Joakim Tjernlund 0 siblings, 1 reply; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-06 8:53 UTC (permalink / raw) To: u-boot > > I guess, Jocke had his /tools compiled long time ago and only > > tried PPC-specific stuff, that seems to work. > > But I guess he did run a MAKEALL before submitting the patch? I tried a few boards, but not all and it compiles with a a lot of ISO bla bla warnings. Looking at now I see that is't wrong for the tools part: make[1]: Entering directory `/usr/local/src/u-boot/tools' gcc -g -Wall -pedantic -I../include -I.. -DTEXT_BASE=0x40000000 -DUSE_HOSTCC -O -c crc32.c In file included from crc32.c:14: ../include/asm/types.h:18: warning: ISO C89 does not support `long long' ../include/asm/types.h:19: warning: ISO C89 does not support `long long' In file included from ../include/linux/byteorder/big_endian.h:11, from ../include/asm/byteorder.h:82, from crc32.c:15: ../include/linux/byteorder/swab.h: In function `__fswab64': ../include/linux/byteorder/swab.h:133: warning: ISO C89 forbids long long integer constants [SNIP] ../include/linux/byteorder/swab.h: In function `__swab64p': ../include/linux/byteorder/swab.h:138: warning: ISO C89 forbids long long integer constants [SNIP] crc32.c: In function `crc32': crc32.c:163: warning: ISO C forbids use of cast expressions as lvalues crc32.c:187: warning: ISO C forbids use of cast expressions as lvalues The ISO warning are harmless caused by the -pedatic option and I don't know how to get rid of these without removing the option. This part is wrong though: In file included from ../include/linux/byteorder/big_endian.h:11, from ../include/asm/byteorder.h:82, from crc32.c:15: This could be solved with some (ugly): #ifdef __powerpc__ #include <asm-ppc/byteorder.h> #elif .... I still don't understand how this can compile. I use RH7.2 and gcc 2.96 RH. My U-boot is not completly up to date(0.2.1) but I don't think that is a problem. Jocke ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-06 8:53 ` Joakim Tjernlund @ 2003-03-06 9:19 ` Joakim Tjernlund 2003-03-06 9:30 ` Wolfgang Denk 0 siblings, 1 reply; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-06 9:19 UTC (permalink / raw) To: u-boot > This could be solved with some (ugly): > #ifdef __powerpc__ > #include <asm-ppc/byteorder.h> > #elif .... Or create a asm link in tools: ln -s ../asm-$HOSTARCH asm The mkconfig and tools/Makefile needs to be adopted for this. Jocke ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-06 9:19 ` Joakim Tjernlund @ 2003-03-06 9:30 ` Wolfgang Denk 2003-03-06 10:19 ` Joakim Tjernlund 0 siblings, 1 reply; 28+ messages in thread From: Wolfgang Denk @ 2003-03-06 9:30 UTC (permalink / raw) To: u-boot In message <IGEFJKJNHJDCBKALBJLLMEOCFKAA.joakim.tjernlund@lumentis.se> you wrote: > > This could be solved with some (ugly): > > #ifdef __powerpc__ > > #include <asm-ppc/byteorder.h> > > #elif .... > > Or create a asm link in tools: ln -s ../asm-$HOSTARCH asm You are aware that these are two _different_ solutions? On a x86 host, the former would pull in the PPC version of byteorder.h, while the latter would use the i386 version? BTW: there is no tools/../asm-* ;-) Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de Everyting looks interesting until you do it. Then you find it's just another job. - Terry Pratchett, _Moving Pictures_ ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-06 9:30 ` Wolfgang Denk @ 2003-03-06 10:19 ` Joakim Tjernlund 2003-03-06 14:37 ` Joakim Tjernlund 0 siblings, 1 reply; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-06 10:19 UTC (permalink / raw) To: u-boot > In message <IGEFJKJNHJDCBKALBJLLMEOCFKAA.joakim.tjernlund@lumentis.se> you wrote: > > > This could be solved with some (ugly): > > > #ifdef __powerpc__ > > > #include <asm-ppc/byteorder.h> > > > #elif .... > > > > Or create a asm link in tools: ln -s ../asm-$HOSTARCH asm > > You are aware that these are two _different_ solutions? Of course I am! That's why I wrote "Or create ..." ^^ > On a x86 host, the former would pull in the PPC version of > byteorder.h, while the latter would use the i386 version? ehh? Let me clarify. Either do like this: #ifndef USE_HOSTCC # include <common.h> # include <asm/types.h> # include <asm/byteorder.h> #else # ifdef __powerpc__ # include <asm-ppc/types.h> # include <asm-ppc/byteorder.h> # elif __i386__ # include <asm-i386/types.h> # include <asm-i386/byteorder.h> # elif .... # endif OR use the ln -s procedure > > BTW: there is no tools/../asm-* ;-) Opps, meant ln -s ../include/asm-$HOSTARCH asm Jocke ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-06 10:19 ` Joakim Tjernlund @ 2003-03-06 14:37 ` Joakim Tjernlund 0 siblings, 0 replies; 28+ messages in thread From: Joakim Tjernlund @ 2003-03-06 14:37 UTC (permalink / raw) To: u-boot > Let me clarify. Either do like this: > #ifndef USE_HOSTCC > # include <common.h> > # include <asm/types.h> > # include <asm/byteorder.h> > #else > # ifdef __powerpc__ > # include <asm-ppc/types.h> > # include <asm-ppc/byteorder.h> > # elif __i386__ > # include <asm-i386/types.h> > # include <asm-i386/byteorder.h> > # elif .... > # endif > > OR use the ln -s procedure hmm, I wonder if the include dir search order is broken for the tools dir. The tools dir contain host tools and these should pick up system include files BEFORE looking in uboots include dir, otherwise these program may pick up bogus stuff from uboot in case there is a file there with the same name as one of the system files. The asm/byteorder.h is a good example of that, but I think my earlier proposed soultions to the asm/byteorder.h is too much bandaid. I can't find a way to make gcc search the system include dirs BEFORE -IDIR. The best I can find is this: "-I../include -I- -I.". That will force gcc to look in ../include only for #include "file.h" directives. The above #ifdef mess will then become: #ifndef USE_HOSTCC # include <common.h> # include "asm/types.h" # include "asm/byteorder.h" #else # include <asm/types.h> # include <asm/byteorder.h> #endif Comments? ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 17:57 ` Joakim Tjernlund 2003-03-04 21:13 ` Wolfgang Denk @ 2003-03-04 21:15 ` Wolfgang Denk 1 sibling, 0 replies; 28+ messages in thread From: Wolfgang Denk @ 2003-03-04 21:15 UTC (permalink / raw) To: u-boot In message <IGEFJKJNHJDCBKALBJLLMEMMFKAA.joakim.tjernlund@lumentis.se> you wrote: > > Optimizing crc32 will probably help a bit. I have pushed some optimiziations into > linux 2.5(lib/crc32.c & friends) that is much faster. I also moved these into my ppcboot, 1.05. > If someone wants, I can send my ppc/crc32.c file. It should be very easy to move these into u-boot. ...ummmm - please do'nt get me wrong: of course I do appreciate any optimizations you may have for the CRC32 code. Just send a patch against the current source. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de Use the Force, Luke. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 14:47 [U-Boot-Users] Boot the kernel from a JFFS2 filesystem Petter Larsen 2003-03-04 15:42 ` Kenneth Johansson @ 2003-03-04 15:43 ` Wolfgang Denk 2003-03-04 15:51 ` Robert Schwebel 2 siblings, 0 replies; 28+ messages in thread From: Wolfgang Denk @ 2003-03-04 15:43 UTC (permalink / raw) To: u-boot In message <1046789264.1140.173.camel@pla> you wrote: > > We can then for example use "fsload" to load a file into memory. But how > can we use this feature if we wont to boot the kernel, lying in this > filesystem, with "bootm". Can you please explain the problem again? When you can use "fsload" to load a file into memory, what prevents you from using "bootm" to boot it, then? Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de This all sounds complicated, but it mostly does excatly what you ex- pect. It's just difficult for us to explain what you expect... - L. Wall & R. L. Schwartz, _Programming Perl_ ^ permalink raw reply [flat|nested] 28+ messages in thread
* [U-Boot-Users] Boot the kernel from a JFFS2 filesystem 2003-03-04 14:47 [U-Boot-Users] Boot the kernel from a JFFS2 filesystem Petter Larsen 2003-03-04 15:42 ` Kenneth Johansson 2003-03-04 15:43 ` Wolfgang Denk @ 2003-03-04 15:51 ` Robert Schwebel 2 siblings, 0 replies; 28+ messages in thread From: Robert Schwebel @ 2003-03-04 15:51 UTC (permalink / raw) To: u-boot On Tue, Mar 04, 2003 at 03:47:45PM +0100, Petter Larsen wrote: > We have enabled JFFS2 in PPCBoot 2.0. > > We can then for example use "fsload" to load a file into memory. But how > can we use this feature if we wont to boot the kernel, lying in this > filesystem, with "bootm". > > We use a AMD flash device. In the kernel we have enabled the CFI in the > MTD options, and enabled JFFS2. I don't understand your question; if your kernel is on a jffs2 partition it is the right way to load it with fsload! What else do you want to do, additional to loading the kernel and booting it? Robert -- Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de Pengutronix - Linux Solutions for Science and Industry Braunschweiger Str. 79, 31134 Hildesheim, Germany Handelsregister: Amtsgericht Hildesheim, HRA 2686 Phone: +49-5121-28619-0 | Fax: +49-5121-28619-4 ^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2003-03-06 14:37 UTC | newest] Thread overview: 28+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-03-04 14:47 [U-Boot-Users] Boot the kernel from a JFFS2 filesystem Petter Larsen 2003-03-04 15:42 ` Kenneth Johansson 2003-03-04 16:50 ` Petter Larsen 2003-03-04 16:59 ` Kenneth Johansson 2003-03-04 18:05 ` Petter Larsen 2003-03-04 21:25 ` Wolfgang Denk 2003-03-04 17:01 ` Robert Schwebel 2003-03-04 17:39 ` Wolfgang Denk 2003-03-04 17:57 ` Joakim Tjernlund 2003-03-04 21:13 ` Wolfgang Denk 2003-03-04 21:31 ` Joakim Tjernlund 2003-03-04 21:58 ` Wolfgang Denk 2003-03-04 22:08 ` Joakim Tjernlund 2003-03-04 22:25 ` Wolfgang Denk 2003-03-04 23:29 ` Joakim Tjernlund 2003-03-05 22:37 ` Wolfgang Denk 2003-03-05 22:52 ` Vladimir Gurevich 2003-03-05 23:46 ` Wolfgang Denk 2003-03-06 0:51 ` Vladimir Gurevich 2003-03-06 0:56 ` Wolfgang Denk 2003-03-06 8:53 ` Joakim Tjernlund 2003-03-06 9:19 ` Joakim Tjernlund 2003-03-06 9:30 ` Wolfgang Denk 2003-03-06 10:19 ` Joakim Tjernlund 2003-03-06 14:37 ` Joakim Tjernlund 2003-03-04 21:15 ` Wolfgang Denk 2003-03-04 15:43 ` Wolfgang Denk 2003-03-04 15:51 ` Robert Schwebel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox