public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] Make JFFS2 endianness configurable
@ 2018-11-01 22:56 Nikunj Kela
  2018-11-02  0:02 ` Daniel Walker
  2018-11-02  8:45 ` Joakim Tjernlund
  0 siblings, 2 replies; 11+ messages in thread
From: Nikunj Kela @ 2018-11-01 22:56 UTC (permalink / raw)
  To: David Woodhouse
  Cc: Nikunj Kela, xe-linux-external, Rod Whitby, linux-mtd,
	linux-kernel

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 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).

This patch is taken from:
http://www.infradead.org/pipermail/linux-mtd/2006-January/014717.html

Cc: xe-linux-external@cisco.com
Signed-off-by: Rod Whitby <rod@whitby.id.au>
Signed-off-by: Nikunj Kela <nkela@cisco.com>
---
 fs/jffs2/Kconfig    | 25 +++++++++++++++++++++++++
 fs/jffs2/nodelist.h |  8 +++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/fs/jffs2/Kconfig b/fs/jffs2/Kconfig
index ad850c5bf2ca..86e93fbc9d74 100644
--- a/fs/jffs2/Kconfig
+++ b/fs/jffs2/Kconfig
@@ -182,3 +182,28 @@ config JFFS2_CMODE_FAVOURLZO
 	  decompression) at the expense of size.
 
 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. Do not 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
diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h
index 0637271f3770..a1ebf04f217c 100644
--- a/fs/jffs2/nodelist.h
+++ b/fs/jffs2/nodelist.h
@@ -27,12 +27,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))})
@@ -54,7 +52,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))})
-- 
2.19.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread
* [PATCH]: Make JFFS2 endianness configurable
@ 2006-01-12 20:18 Rod Whitby
  0 siblings, 0 replies; 11+ messages in thread
From: Rod Whitby @ 2006-01-12 20:18 UTC (permalink / raw)
  To: linux-mtd

[-- Attachment #1: Type: text/plain, Size: 665 bytes --]

This patch allows the endianness of the JFSS2 filesystem to be
specified by config options.  It was discussed with dwmw2 on IRC.

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 <rod@whitby.id.au>

[Attached instead of inline due to mailer wrapping incorrectly.
 Apologies in advance for any inconvenience caused by this.]

-- Rod Whitby
-- NSLU2-Linux project lead

[-- Attachment #2: 15-jffs2-endian-config.patch --]
[-- Type: application/octet-stream, Size: 2351 bytes --]

--- linux-2.6.15/fs/Kconfig~	2006-01-03 13:51:10.000000000 +1030
+++ linux-2.6.15/fs/Kconfig	2006-01-05 01:35:36.000000000 +1030
@@ -1132,6 +1132,31 @@ config JFFS2_CMODE_SIZE
 
 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)"
 	select ZLIB_INFLATE
--- linux-2.6.15/fs/jffs2/nodelist.h~	2006-01-05 01:37:06.000000000 +1030
+++ linux-2.6.15/fs/jffs2/nodelist.h	2006-01-05 01:37:54.000000000 +1030
@@ -29,12 +29,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)})
@@ -42,7 +40,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))})
@@ -50,7 +48,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))})

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2018-11-07  1:09 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-01 22:56 [PATCH] Make JFFS2 endianness configurable Nikunj Kela
2018-11-02  0:02 ` Daniel Walker
2018-11-02  0:34   ` Al Viro
2018-11-02 14:04     ` Daniel Walker
2018-11-02 20:15       ` Richard Weinberger
2018-11-02 21:14         ` Daniel Walker
2018-11-02 21:22           ` Richard Weinberger
2018-11-07  1:09             ` Nikunj Kela (nkela)
2018-11-02  8:45 ` Joakim Tjernlund
2018-11-02  9:28   ` Richard Weinberger
  -- strict thread matches above, loose matches on Subject: below --
2006-01-12 20:18 [PATCH]: " Rod Whitby

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox