This patch has been accepted into the linux-mtd CVS repository. Submitted as http://lists.infradead.org/pipermail/linux-mtd/2006-January/014740.html This patch allows the endianness of the JFSS2 filesystem to be specified by config options. It defaults to native-endian (the previously hard-coded option). Some architectures (in particular, the NSLU2) benefit from having a single known endianness of JFFS2 filesystem (for data, not executables) independent of the endianness of the processor (ARM processors can be switched to either endianness at run-time). Signed-off-by: Rod Whitby Signed-off-by: Alessandro Zummo fs/Kconfig | 25 +++++++++++++++++++++++++ fs/jffs2/nodelist.h | 8 +++----- 2 files changed, 28 insertions(+), 5 deletions(-) Index: linux-2.6.19-rc3/fs/Kconfig =================================================================== --- linux-2.6.19-rc3.orig/fs/Kconfig 2006-10-24 00:27:37.000000000 -0700 +++ linux-2.6.19-rc3/fs/Kconfig 2006-10-24 00:27:41.000000000 -0700 @@ -1387,6 +1387,31 @@ endchoice +choice + prompt "JFFS2 endianness" + default JFFS2_NATIVE_ENDIAN + depends on JFFS2_FS + help + You can set here the default endianness of JFFS2 from + the available options. Don't touch if unsure. + +config JFFS2_NATIVE_ENDIAN + bool "native endian" + help + Uses a native endian bytestream. + +config JFFS2_BIG_ENDIAN + bool "big endian" + help + Uses a big endian bytestream. + +config JFFS2_LITTLE_ENDIAN + bool "little endian" + help + Uses a little endian bytestream. + +endchoice + config CRAMFS tristate "Compressed ROM file system support (cramfs)" depends on BLOCK Index: linux-2.6.19-rc3/fs/jffs2/nodelist.h =================================================================== --- linux-2.6.19-rc3.orig/fs/jffs2/nodelist.h 2006-09-19 20:42:06.000000000 -0700 +++ linux-2.6.19-rc3/fs/jffs2/nodelist.h 2006-10-24 00:27:41.000000000 -0700 @@ -30,12 +30,10 @@ #include "os-linux.h" #endif -#define JFFS2_NATIVE_ENDIAN - /* Note we handle mode bits conversion from JFFS2 (i.e. Linux) to/from whatever OS we're actually running on here too. */ -#if defined(JFFS2_NATIVE_ENDIAN) +#if defined(CONFIG_JFFS2_NATIVE_ENDIAN) #define cpu_to_je16(x) ((jint16_t){x}) #define cpu_to_je32(x) ((jint32_t){x}) #define cpu_to_jemode(x) ((jmode_t){os_to_jffs2_mode(x)}) @@ -43,7 +41,7 @@ #define je16_to_cpu(x) ((x).v16) #define je32_to_cpu(x) ((x).v32) #define jemode_to_cpu(x) (jffs2_to_os_mode((x).m)) -#elif defined(JFFS2_BIG_ENDIAN) +#elif defined(CONFIG_JFFS2_BIG_ENDIAN) #define cpu_to_je16(x) ((jint16_t){cpu_to_be16(x)}) #define cpu_to_je32(x) ((jint32_t){cpu_to_be32(x)}) #define cpu_to_jemode(x) ((jmode_t){cpu_to_be32(os_to_jffs2_mode(x))}) @@ -51,7 +49,7 @@ #define je16_to_cpu(x) (be16_to_cpu(x.v16)) #define je32_to_cpu(x) (be32_to_cpu(x.v32)) #define jemode_to_cpu(x) (be32_to_cpu(jffs2_to_os_mode((x).m))) -#elif defined(JFFS2_LITTLE_ENDIAN) +#elif defined(CONFIG_JFFS2_LITTLE_ENDIAN) #define cpu_to_je16(x) ((jint16_t){cpu_to_le16(x)}) #define cpu_to_je32(x) ((jint32_t){cpu_to_le32(x)}) #define cpu_to_jemode(x) ((jmode_t){cpu_to_le32(os_to_jffs2_mode(x))})