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__ */
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to