aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Percival <cperciva@FreeBSD.org>2021-06-24 05:21:23 +0000
committerColin Percival <cperciva@FreeBSD.org>2021-06-24 05:21:23 +0000
commite6caac717b4fc2b87cf93f67109884e768253e77 (patch)
treeaf0e7c131c90d84155791cb15b22eee6e3413f2e
parentccadcb8f3343562f22a426e845dba640319d4355 (diff)
downloadsrc-e6caac717b4fc2b87cf93f67109884e768253e77.tar.gz
src-e6caac717b4fc2b87cf93f67109884e768253e77.zip
libsa: Add tslog support for arm64
The original code only supported x86 and used rdtsc(); we now also support arm64 and use the CNTVCT_EL0 special register.
-rw-r--r--stand/libsa/tslog.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/stand/libsa/tslog.c b/stand/libsa/tslog.c
index 7ea18e0bb8f8..c6164aab02a9 100644
--- a/stand/libsa/tslog.c
+++ b/stand/libsa/tslog.c
@@ -29,7 +29,11 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
+#if defined(__amd64__) || defined(__i386__)
#include <machine/cpufunc.h>
+#elif defined(__aarch64__)
+#include <machine/armreg.h>
+#endif
#include <stand.h>
@@ -60,6 +64,8 @@ tslog(const char * type, const char * f, const char * s)
{
#if defined(__amd64__) || defined(__i386__)
uint64_t tsc = rdtsc();
+#elif defined(__aarch64__)
+ uint64_t tsc = READ_SPECIALREG(cntvct_el0);
#else
uint64_t tsc = 0;
#endif