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