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