diff options
-rw-r--r-- | perf_rc_mmap.c | 4 |
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; } |