fs/cramfs: add xip option
authorChris Brandt <chris.brandt@renesas.com>
Sat, 7 Apr 2018 13:35:43 +0000 (08:35 -0500)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Mon, 9 Apr 2018 09:29:46 +0000 (11:29 +0200)
Cramfs now has the ability to XIP all ELF files.

Cc: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
fs/cramfs/Config.in
fs/cramfs/cramfs.mk

index b11885b4f4f4d2454abe0178400f659736aa9b68..89f8ad52b8aba4b03adc4cb485d0c86eb423cea2 100644 (file)
@@ -4,3 +4,23 @@ config BR2_TARGET_ROOTFS_CRAMFS
          Build a cramfs root filesystem
 
          https://github.com/npitre/cramfs-tools
+
+if BR2_TARGET_ROOTFS_CRAMFS
+
+config BR2_TARGET_ROOTFS_CRAMFS_XIP
+       bool "Support XIP of all ELF files"
+       help
+         For ELF files, uncompressed and properly aligned data blocks
+         will be automatically be mapped directly into user space
+         whenever possible providing eXecute-In-Place (XIP) from ROM
+         of read-only segments. Data segments mapped read-write
+         (hence they have to be copied to RAM) may still be
+         compressed in the cramfs image in the same file along with
+         non compressed read-only segments. Both MMU and no-MMU
+         systems are supported. This is particularly handy for tiny
+         embedded systems with very tight memory constraints.
+
+         The CRAMFS_MTD Kconfig option must also be enabled in a
+         4.15+ kernel.
+
+endif # BR2_TARGET_ROOTFS_CRAMFS
index 8745c78031212ec5656ec51755257a00ab23daaa..925063888734255f3fa06c3a26ec285e200f1fc5 100644 (file)
@@ -10,6 +10,14 @@ else
 CRAMFS_OPTS = -L
 endif
 
+ifeq ($(BR2_TARGET_ROOTFS_CRAMFS_XIP),y)
+ifeq ($(BR2_USE_MMU),y)
+CRAMFS_OPTS += -X -X
+else
+CRAMFS_OPTS += -X
+endif
+endif
+
 define ROOTFS_CRAMFS_CMD
        $(HOST_DIR)/bin/mkcramfs $(CRAMFS_OPTS) $(TARGET_DIR) $@
 endef