Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jul 2018 10:10:01 +0000 (UTC)
From:      Matt Macy <mmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r336024 - head/sys/amd64/include
Message-ID:  <201807061010.w66AA1tK082590@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mmacy
Date: Fri Jul  6 10:10:00 2018
New Revision: 336024
URL: https://svnweb.freebsd.org/changeset/base/336024

Log:
  counter(9): unbreak amd64 following r336020
  
  Apply temporary fix to counter until daylight hours.
  The fact that the assembly for counter_u64_add relied on the sizeof(struct pcpu) was
  the basis for the otherwise arbitrary offset never came up in D15933.
  critical_{enter,exit} is now inline so the only real added overhead is the
  added (mostly false) conditional branch in exit.

Modified:
  head/sys/amd64/include/counter.h

Modified: head/sys/amd64/include/counter.h
==============================================================================
--- head/sys/amd64/include/counter.h	Fri Jul  6 10:03:33 2018	(r336023)
+++ head/sys/amd64/include/counter.h	Fri Jul  6 10:10:00 2018	(r336024)
@@ -83,11 +83,18 @@ counter_u64_zero_inline(counter_u64_t c)
 static inline void
 counter_u64_add(counter_u64_t c, int64_t inc)
 {
-
+	int64_t *p;
+#ifdef notyet
 	__asm __volatile("addq\t%1,%%gs:(%0)"
 	    :
 	    : "r" ((char *)c - (char *)&__pcpu[0]), "ri" (inc)
 	    : "memory", "cc");
+#endif
+	/* temporary */
+	critical_enter();
+	p = zpcpu_get(c);
+	*p += inc;
+	critical_exit();
 }
 
 #endif	/* ! __MACHINE_COUNTER_H__ */



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