svn commit: r336024 - head/sys/amd64/include

Matt Macy mmacy at FreeBSD.org
Fri Jul 6 10:10:01 UTC 2018


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__ */


More information about the svn-src-head mailing list