summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--perf_rc_mmap.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/perf_rc_mmap.c b/perf_rc_mmap.c
index 838c869..2c404dc 100644
--- a/perf_rc_mmap.c
+++ b/perf_rc_mmap.c
@@ -20,7 +20,8 @@
#include <sys/mman.h>
#include <errno.h>
#include <string.h>
-#define barrier() asm volatile("" ::: "memory")
+#define barrier() asm volatile("dmb ish" ::: "memory")
+#define isb() asm volatile("isb" ::: "memory")
static int fddev = -1;
__attribute__((constructor)) static void
init(void)
@@ -42,6 +43,7 @@ static unsigned long rdpmc(unsigned int counter)
{
unsigned long int ret;
asm volatile("mrs %0, pmccntr_el0" : "=r" (ret));
+ isb();
return ret;
}