Teach cramfs to handle byteswapping sanely. I want to specify
authorEric Andersen <andersen@codepoet.org>
Fri, 6 May 2005 00:17:04 +0000 (00:17 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 6 May 2005 00:17:04 +0000 (00:17 -0000)
big endian or little endian, not whether to unconditionally do
byteswapping regardless of build system byte order.

target/cramfs/cramfs-02-endian.patch
target/cramfs/cramfs.mk

index 2b9df3f3aa09008fd1118c4f05bd352ba57cdb12..4c28b8397a1bcd94d848c78ba73fd738129e4b1b 100644 (file)
@@ -8,11 +8,12 @@
  
  static int warn_dev, warn_gid, warn_namelen, warn_skip, warn_size, warn_uid;
  static const char *const memory_exhausted = "memory exhausted";
-@@ -155,6 +156,7 @@
+@@ -155,6 +156,8 @@
                " -i file    insert a file image into the filesystem (requires >= 2.4.0)\n"
                " -n name    set name of cramfs filesystem\n"
                " -p         pad by %d bytes for boot code\n"
-+              " -r         reverse endian-ness of filesystem\n"
++              " -l         litte endian filesystem\n"
++              " -b         big endian filesystem\n"
                " -s         sort directory entries (old option, ignored)\n"
                " -v         be more verbose\n"
                " -z         make explicit holes (requires >= 2.3.39)\n"
  
        /* command line options */
 -      while ((c = getopt(argc, argv, "hEe:i:n:psvzD:q")) != EOF) {
-+      while ((c = getopt(argc, argv, "hEe:i:n:prsvzD:q")) != EOF) {
++      while ((c = getopt(argc, argv, "hEe:i:n:psvzD:qlb")) != EOF) {
                switch (c) {
                case 'h':
                        usage(MKFS_OK);
-@@ -1174,6 +1226,10 @@
+@@ -1174,6 +1227,18 @@
                        opt_pad = PAD_SIZE;
                        fslen_ub += PAD_SIZE;
                        break;
-+              case 'r':
++              case 'b':
++#if __BYTE_ORDER == __LITTLE_ENDIAN
 +                      swap_endian = 1;
 +                      printf("Swapping filesystem endian-ness\n");
++#endif
++                      break;
++              case 'l':
++#if __BYTE_ORDER == __BIG_ENDIAN
++                      swap_endian = 1;
++                      printf("Swapping filesystem endian-ness\n");
++#endif
 +                      break;
                case 's':
                        /* old option, ignored */
index 5905eb6e59d7718d6694d95d61c2c9ee4862e2f2..bc8424000a427ee771d2fb42a8ada36ce95cde94 100644 (file)
@@ -33,23 +33,24 @@ cramfs-dirclean:
 # Build the cramfs root filesystem image
 #
 #############################################################
+CRAMFS_ENDIANNESS=-l
 ifeq ($(strip $(BR2_armeb)),y)
-CRAMFS_ENDIANNESS=-r
+CRAMFS_ENDIANNESS=-b
 endif
 ifeq ($(strip $(BR2_mips)),y)
-CRAMFS_ENDIANNESS=-r
+CRAMFS_ENDIANNESS=-b
 endif
 ifeq ($(strip $(BR2_powerpc)),y)
-CRAMFS_ENDIANNESS=-r
+CRAMFS_ENDIANNESS=-b
 endif
 ifeq ($(strip $(BR2_sh3eb)),y)
-CRAMFS_ENDIANNESS=-r
+CRAMFS_ENDIANNESS=-b
 endif
 ifeq ($(strip $(BR2_sh4eb)),y)
-CRAMFS_ENDIANNESS=-r
+CRAMFS_ENDIANNESS=-b
 endif
 ifeq ($(strip $(BR2_sparc)),y)
-CRAMFS_ENDIANNESS=-r
+CRAMFS_ENDIANNESS=-b
 endif
 
 cramfsroot: cramfs