Skip to content

Instantly share code, notes, and snippets.

@bradley-evans
Created January 31, 2020 22:31
Show Gist options
  • Save bradley-evans/9067389c7ce46fd6cb7dbfb19946f972 to your computer and use it in GitHub Desktop.
Save bradley-evans/9067389c7ce46fd6cb7dbfb19946f972 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#define CACHE_MISS 0x100
int loop(int n, int a) {
int b = 0;
for(int i=0; i<n; i++) {
b = a + b;
}
return b;
}
int main() {
int a = 1;
int n = 200;
int count = 0;
// initialize counters here
// should start tracking cache misses with 0x100
__asm__ volatile("csrw mhpmevent3, %0"
:
: "r"(CACHE_MISS)
);
loop(n, a);
// read counters here
__asm__ volatile("csrr %0, mhpmcounter3"
: "=r"(count)
);
printf("Cache misses: %d\n", count);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment