OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | commit b050f87d13b5dc7ed82feb9a90f4529de58bdf25 |
2 | Author: Felix Fietkau <nbd@openwrt.org> |
||
3 | Date: Wed Feb 19 19:20:10 2014 +0000 |
||
4 | |||
5 | gcc: prevent the use of LDRD/STRD on ARMv5TE |
||
6 | |||
7 | These instructions are for 64-bit load/store. On ARMv5TE, the CPU |
||
8 | requires addresses to be aligned to 64-bit. When misaligned, behavior is |
||
9 | undefined (effectively either loads the same word twice on LDRD, or |
||
10 | corrupts surrounding memory on STRD). |
||
11 | |||
12 | On ARMv6 and newer, unaligned access is safe. |
||
13 | |||
14 | Removing these instructions for ARMv5TE is necessary, because GCC |
||
15 | ignores alignment information in pointers and does unsafe optimizations |
||
16 | that have shown up as bugs in various places. |
||
17 | |||
18 | Signed-off-by: Felix Fietkau <nbd@openwrt.org> |
||
19 | |||
20 | SVN-Revision: 39638 |
||
21 | |||
22 | --- a/gcc/config/arm/arm.h |
||
23 | +++ b/gcc/config/arm/arm.h |
||
24 | @@ -150,7 +150,7 @@ extern tree arm_fp16_type_node; |
||
25 | /* Thumb-1 only. */ |
||
26 | #define TARGET_THUMB1_ONLY (TARGET_THUMB1 && !arm_arch_notm) |
||
27 | |||
28 | -#define TARGET_LDRD (arm_arch5e && ARM_DOUBLEWORD_ALIGN \ |
||
29 | +#define TARGET_LDRD (arm_arch6 && ARM_DOUBLEWORD_ALIGN \ |
||
30 | && !TARGET_THUMB1) |
||
31 | |||
32 | #define TARGET_CRC32 (arm_arch_crc) |