diff options
author | Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk> | 2017-08-22 11:01:07 +0100 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2017-09-16 19:33:37 +0200 |
commit | 3f4f580954fd90ce3ad6eb6ca6ab7b96eb66539c (patch) | |
tree | 849a11e62055caa16a59688633684b6f861859b4 /toolchain/gcc/patches/7.2.0/800-arm_v5te_no_ldrd_strd.patch | |
parent | 820101873d6ac197cf5aff327f784ec3584fe1c7 (diff) | |
download | upstream-3f4f580954fd90ce3ad6eb6ca6ab7b96eb66539c.tar.gz upstream-3f4f580954fd90ce3ad6eb6ca6ab7b96eb66539c.tar.bz2 upstream-3f4f580954fd90ce3ad6eb6ca6ab7b96eb66539c.zip |
toolchain: gcc: update 7.x to 7.2.0
Bump gcc from 7.1 to 7.2
Compile & run tested: ar71xx
Trace history of current patches and update with commit ref & comment
to give more clue as to why they're still around/needed. Some have
changed form since the original commit but some clue is better than no
clue at all.
Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Diffstat (limited to 'toolchain/gcc/patches/7.2.0/800-arm_v5te_no_ldrd_strd.patch')
-rw-r--r-- | toolchain/gcc/patches/7.2.0/800-arm_v5te_no_ldrd_strd.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/7.2.0/800-arm_v5te_no_ldrd_strd.patch b/toolchain/gcc/patches/7.2.0/800-arm_v5te_no_ldrd_strd.patch new file mode 100644 index 0000000000..76200a1661 --- /dev/null +++ b/toolchain/gcc/patches/7.2.0/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) |