Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Jun 2016 16:48:27 +0000 (UTC)
From:      Ian Lepore <ian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r301872 - head/sys/arm/include
Message-ID:  <201606131648.u5DGmRFb089449@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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.
  */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201606131648.u5DGmRFb089449>