Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Apr 2017 15:43:44 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r316764 - head/sys/kern
Message-ID:  <201704131543.v3DFhiHB003484@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Thu Apr 13 15:43:44 2017
New Revision: 316764
URL: https://svnweb.freebsd.org/changeset/base/316764

Log:
  Don't prefix zero with 0x in assym.s.
  
  The arm64 binutils only accepts 0 as an offset to the Load-Acquire Register
  instructions where llvm will acceps both 0 and 0x0. The thread switching
  code uses these with SCHED_ULE to block waiting for a lock to be released.
  As the offset of the data to be loaded is zero this is safe, however it is
  useful to keep the offset in the instruction to document what is being
  loaded.
  
  To work around this issue in binutils only generate the 0x prefix for
  non-zero values.
  
  Reported by:	kan
  Sponsored by:	DARPA, AFRL

Modified:
  head/sys/kern/genassym.sh

Modified: head/sys/kern/genassym.sh
==============================================================================
--- head/sys/kern/genassym.sh	Thu Apr 13 15:40:57 2017	(r316763)
+++ head/sys/kern/genassym.sh	Thu Apr 13 15:43:44 2017	(r316764)
@@ -32,12 +32,15 @@ work()
 		sub("^0*", "", w)
 		if (w == "")
 			w = "0"
+		hex = ""
+		if (w != "0")
+			hex = "0x"
 		sub("w3$", "", $3)
 		# This still has minor problems representing INT_MIN, etc. 
 		# E.g.,
 		# with 32-bit 2''s complement ints, this prints -0x80000000,
 		# which has the wrong type (unsigned int).
-		printf("#define\t%s\t%s0x%s\n", $3, sign, w)
+		printf("#define\t%s\t%s%s%s\n", $3, sign, hex, w)
 	} '
 }
 



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