aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch
diff options
context:
space:
mode:
authorEvgeniy Didin <Evgeniy.Didin@synopsys.com>2018-01-24 20:26:03 +0300
committerHauke Mehrtens <hauke@hauke-m.de>2018-01-27 16:46:44 +0100
commite47fe3284f25c0d7354f239ea8424b96dfe5b36d (patch)
tree3d7664b58bf65eee13543aee8fa0848036cd25c9 /toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch
parent53021ce7f24b0fd80a6f50517a25d762d783102b (diff)
downloadupstream-e47fe3284f25c0d7354f239ea8424b96dfe5b36d.tar.gz
upstream-e47fe3284f25c0d7354f239ea8424b96dfe5b36d.tar.bz2
upstream-e47fe3284f25c0d7354f239ea8424b96dfe5b36d.zip
toolchain/arc: update to the most recent release arc-2017.09
This commit finally bumps ARC tools to the most recent arc-2017.09 release version. ARC GNU tools of version arc-2017.09 bring some quite significant changes like: * Binutils v2.29 with additional ARC patches * GCC 7.1.1 with additional ARC patches More information on this release could be found here: https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2017.09-release Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com> CC: Alexey Brodkin <abrodkin@synopsys.com> CC: John Crispin <john@phrozen.org>
Diffstat (limited to 'toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch')
-rw-r--r--toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch b/toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch
new file mode 100644
index 0000000000..76200a1661
--- /dev/null
+++ b/toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch
@@ -0,0 +1,32 @@
+commit b050f87d13b5dc7ed82feb9a90f4529de58bdf25
+Author: Felix Fietkau <nbd@openwrt.org>
+Date: Wed Feb 19 19:20:10 2014 +0000
+
+ gcc: prevent the use of LDRD/STRD on ARMv5TE
+
+ These instructions are for 64-bit load/store. On ARMv5TE, the CPU
+ requires addresses to be aligned to 64-bit. When misaligned, behavior is
+ undefined (effectively either loads the same word twice on LDRD, or
+ corrupts surrounding memory on STRD).
+
+ On ARMv6 and newer, unaligned access is safe.
+
+ Removing these instructions for ARMv5TE is necessary, because GCC
+ ignores alignment information in pointers and does unsafe optimizations
+ that have shown up as bugs in various places.
+
+ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+ SVN-Revision: 39638
+
+--- a/gcc/config/arm/arm.h
++++ b/gcc/config/arm/arm.h
+@@ -150,7 +150,7 @@ extern tree arm_fp16_type_node;
+ /* Thumb-1 only. */
+ #define TARGET_THUMB1_ONLY (TARGET_THUMB1 && !arm_arch_notm)
+
+-#define TARGET_LDRD (arm_arch5e && ARM_DOUBLEWORD_ALIGN \
++#define TARGET_LDRD (arm_arch6 && ARM_DOUBLEWORD_ALIGN \
+ && !TARGET_THUMB1)
+
+ #define TARGET_CRC32 (arm_arch_crc)