summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntony Pavlov <antonynpavlov@gmail.com>2022-02-10 16:46:39 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2022-02-11 11:35:22 +0100
commit149932efdf368adb4abb2594e3d33899315449a1 (patch)
tree381fca05f29621db2f2cbb02fdfb554cdd885ebc
parent3a99d7573a7bc7669f6bf035824e8be772c43061 (diff)
downloadbarebox-149932efdf368adb4abb2594e3d33899315449a1.tar.gz
barebox-149932efdf368adb4abb2594e3d33899315449a1.tar.xz
imd: add optional endianness= parameter for bi-endian systems
MIPS architecture supports both little- and big-endian modes. It's handy to have means to determine endianness of barebox image. This patch adds necessary record into imd block. Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Link: https://lore.barebox.org/20220210134639.341801-1-antonynpavlov@gmail.com Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--common/Kconfig6
-rw-r--r--common/imd-barebox.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/common/Kconfig b/common/Kconfig
index dba6aa43fd..f7a6a96e87 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -730,6 +730,12 @@ config IMD
select CRC32
bool "barebox metadata support"
+config IMD_ENDIANNESS
+ bool "add endianness record to metadata"
+ depends on IMD
+ depends on SYS_SUPPORTS_LITTLE_ENDIAN && SYS_SUPPORTS_BIG_ENDIAN
+ default y
+
choice
prompt "console support"
default CONSOLE_FULL
diff --git a/common/imd-barebox.c b/common/imd-barebox.c
index e11fdca845..7877c8de39 100644
--- a/common/imd-barebox.c
+++ b/common/imd-barebox.c
@@ -23,6 +23,16 @@ __BAREBOX_IMD_SECTION(.barebox_imd_end) = {
.type = cpu_to_le32(IMD_TYPE_END),
};
+#ifdef CONFIG_IMD_ENDIANNESS
+#ifdef CONFIG_CPU_LITTLE_ENDIAN
+#define IMD_ENDIANNESS "little"
+#else
+#define IMD_ENDIANNESS "big"
+#endif
+BAREBOX_IMD_TAG_STRING(imd_endianness_tag, IMD_TYPE_PARAMETER,
+ "endianness=" IMD_ENDIANNESS, 1);
+#endif /* CONFIG_IMD_ENDIANNESS */
+
BAREBOX_IMD_TAG_STRING(imd_build_tag, IMD_TYPE_BUILD, UTS_VERSION, 1);
BAREBOX_IMD_TAG_STRING(imd_release_tag, IMD_TYPE_RELEASE, UTS_RELEASE, 1);
BAREBOX_IMD_TAG_STRING(imd_buildsystem_version_tag, IMD_TYPE_BUILDSYSTEM, BUILDSYSTEM_VERSION, 1);