svn commit: r301872 - head/sys/arm/include
Ian Lepore
ian at FreeBSD.org
Mon Jun 13 16:48:28 UTC 2016
Author: ian
Date: Mon Jun 13 16:48:27 2016
New Revision: 301872
URL: https://svnweb.freebsd.org/changeset/base/301872
Log:
Do not define __NO_STRICT_ALIGNMENT for armv6. While the requirements
are no longer natural-alignment strict, there are still some restrictions.
FreeBSD network code assumes data is naturally-aligned or is running
on a platform with no restrictions; pointers are not annotated to
indicate the data pointed to may be packed or unaligned. The clang
optimizer can sometimes combine the load or store of a pair of adjacent
32-bit values into a single doubleword load/store, and that operation
requires at least 4-byte alignment. __NO_STRICT_ALIGNMENT can lead
to tcp headers being only 2-byte aligned.
Note that alignment faults remain disabled on armv6, this change reverts
only the defining of the symbol which leads to some overly-agressive code
shortcuts when building common/shared drivers and network code for arm.
Approved by: re(kib)
Modified:
head/sys/arm/include/_types.h
Modified: head/sys/arm/include/_types.h
==============================================================================
--- head/sys/arm/include/_types.h Mon Jun 13 11:19:06 2016 (r301871)
+++ head/sys/arm/include/_types.h Mon Jun 13 16:48:27 2016 (r301872)
@@ -43,10 +43,6 @@
#error this file needs sys/cdefs.h as a prerequisite
#endif
-#if __ARM_ARCH >= 6
-#define __NO_STRICT_ALIGNMENT
-#endif
-
/*
* Basic types upon which most other types are built.
*/
More information about the svn-src-all
mailing list