[OE-core] [PATCH] Fix alignment trap triggered by NEON instructions
Huang, Jie (Jackie)
Jackie.Huang at windriver.com
Wed Oct 22 08:45:34 UTC 2014
> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org [mailto:openembedded-core-
> bounces at lists.openembedded.org] On Behalf Of jackie.huang at windriver.com
> Sent: Wednesday, October 22, 2014 4:41 PM
> To: openembedded-core at lists.openembedded.org
> Subject: [OE-core] [PATCH] Fix alignment trap triggered by NEON instructions
Please ignore this, I will re-send with the pkgname prefix:
s/ Fix alignment trap triggered by NEON instructions/
mtd-utils: Fix alignment trap triggered by NEON instructions/
thanks,
Jackie
>
> From: Yuanjie Huang <Yuanjie.Huang at windriver.com>
>
> NEON instruction VLD1.64 was used to copy 64 bits data after type casting, and they will trigger
> alignment trap.
> This patch uses memcpy to avoid alignment problem.
>
> Signed-off-by: Yuanjie Huang <Yuanjie.Huang at windriver.com>
> ---
> .../mtd/mtd-utils/fix-armv7-neon-alignment.patch | 44 ++++++++++++++++++++++
> meta/recipes-devtools/mtd/mtd-utils_git.bb | 1 +
> 2 files changed, 45 insertions(+)
> create mode 100644 meta/recipes-devtools/mtd/mtd-utils/fix-armv7-neon-alignment.patch
>
> diff --git a/meta/recipes-devtools/mtd/mtd-utils/fix-armv7-neon-alignment.patch b/meta/recipes-
> devtools/mtd/mtd-utils/fix-armv7-neon-alignment.patch
> new file mode 100644
> index 0000000..05f1629
> --- /dev/null
> +++ b/meta/recipes-devtools/mtd/mtd-utils/fix-armv7-neon-alignment.patch
> @@ -0,0 +1,44 @@
> +Upstream-Status: Pending
> +
> +NEON instruction VLD1.64 was used to copy 64 bits data after type
> +casting, and they will trigger alignment trap.
> +This patch uses memcpy to avoid alignment problem.
> +
> +Signed-off-by: Yuanjie Huang <Yuanjie.Huang at windriver.com>
> +
> +diff --git a/mkfs.ubifs/key.h b/mkfs.ubifs/key.h index d3a02d4..e7e9218
> +100644
> +--- a/mkfs.ubifs/key.h
> ++++ b/mkfs.ubifs/key.h
> +@@ -141,10 +141,12 @@ static inline void data_key_init(union ubifs_key
> +*key, ino_t inum,
> + */
> + static inline void key_write(const union ubifs_key *from, void *to) {
> +- union ubifs_key *t = to;
> ++ __le32 x[2];
> +
> +- t->j32[0] = cpu_to_le32(from->u32[0]);
> +- t->j32[1] = cpu_to_le32(from->u32[1]);
> ++ x[0] = cpu_to_le32(from->u32[0]);
> ++ x[1] = cpu_to_le32(from->u32[1]);
> ++
> ++ memcpy(to, &x, 8);
> + memset(to + 8, 0, UBIFS_MAX_KEY_LEN - 8); }
> +
> +@@ -156,10 +158,12 @@ static inline void key_write(const union
> +ubifs_key *from, void *to)
> + */
> + static inline void key_write_idx(const union ubifs_key *from, void
> +*to) {
> +- union ubifs_key *t = to;
> ++ __le32 x[2];
> ++
> ++ x[0] = cpu_to_le32(from->u32[0]);
> ++ x[1] = cpu_to_le32(from->u32[1]);
> +
> +- t->j32[0] = cpu_to_le32(from->u32[0]);
> +- t->j32[1] = cpu_to_le32(from->u32[1]);
> ++ memcpy(to, &x, 8);
> + }
> +
> + /**
> diff --git a/meta/recipes-devtools/mtd/mtd-utils_git.bb b/meta/recipes-devtools/mtd/mtd-
> utils_git.bb
> index f78bc7e..52297c6 100644
> --- a/meta/recipes-devtools/mtd/mtd-utils_git.bb
> +++ b/meta/recipes-devtools/mtd/mtd-utils_git.bb
> @@ -10,6 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3
> \ SRCREV = "9f107132a6a073cce37434ca9cda6917dd8d866b"
> SRC_URI = "git://git.infradead.org/mtd-utils.git \
> file://add-exclusion-to-mkfs-jffs2-git-2.patch \
> + file://fix-armv7-neon-alignment.patch \
> "
>
> PV = "1.5.1+git${SRCPV}"
> --
> 2.0.0
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
More information about the Openembedded-core
mailing list