From 428194fed271bc910aeda7f263f4dcd661b12399 Mon Sep 17 00:00:00 2001 From: Matt Macy Date: Fri, 6 Jul 2018 10:10:00 +0000 Subject: [PATCH] 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. --- sys/amd64/include/counter.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sys/amd64/include/counter.h b/sys/amd64/include/counter.h index 2255a0575a0..b09790fcb34 100644 --- a/sys/amd64/include/counter.h +++ b/sys/amd64/include/counter.h @@ -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__ */