summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2005-05-06 00:17:04 +0000
committerEric Andersen <andersen@codepoet.org>2005-05-06 00:17:04 +0000
commit1515bfd3bbfdd1892d72cdd32ab4394f1ecc9e49 (patch)
treec7007152f3e8afe00f51a9a6bdcc5d7833b72c11
parent42f7febfb8acfacc5cd613f57b950e1708a6084d (diff)
downloadbuildroot-novena-1515bfd3bbfdd1892d72cdd32ab4394f1ecc9e49.tar.gz
buildroot-novena-1515bfd3bbfdd1892d72cdd32ab4394f1ecc9e49.zip
Teach cramfs to handle byteswapping sanely. I want to specify
big endian or little endian, not whether to unconditionally do byteswapping regardless of build system byte order.
-rw-r--r--target/cramfs/cramfs-02-endian.patch19
-rw-r--r--target/cramfs/cramfs.mk13
2 files changed, 21 insertions, 11 deletions
diff --git a/target/cramfs/cramfs-02-endian.patch b/target/cramfs/cramfs-02-endian.patch
index 2b9df3f3a..4c28b8397 100644
--- a/target/cramfs/cramfs-02-endian.patch
+++ b/target/cramfs/cramfs-02-endian.patch
@@ -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"
@@ -108,17 +109,25 @@
/* 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 */
diff --git a/target/cramfs/cramfs.mk b/target/cramfs/cramfs.mk
index 5905eb6e5..bc8424000 100644
--- a/target/cramfs/cramfs.mk
+++ b/target/cramfs/cramfs.mk
@@ -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