summaryrefslogtreecommitdiff
path: root/Kernel/Arch/aarch64/Registers.h
diff options
context:
space:
mode:
authorkonrad <konrad@serenityos.org>2022-12-24 01:23:30 +0100
committerAndreas Kling <kling@serenityos.org>2022-12-26 14:11:27 +0100
commit88d0d0d90ddf880031fef795f74538954f159cf3 (patch)
tree9fcbefe59c4dde33a1cc6d500a876e05515da6eb /Kernel/Arch/aarch64/Registers.h
parente1c3bf0ec03680d5cbc47750f69f7b70845fa51c (diff)
downloadserenity-88d0d0d90ddf880031fef795f74538954f159cf3.zip
Kernel: Add PMCCNTR_EL0, Performance Monitors Cycle Count Register
Diffstat (limited to 'Kernel/Arch/aarch64/Registers.h')
-rw-r--r--Kernel/Arch/aarch64/Registers.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/Kernel/Arch/aarch64/Registers.h b/Kernel/Arch/aarch64/Registers.h
index 1a1c656805..84af4ae7d2 100644
--- a/Kernel/Arch/aarch64/Registers.h
+++ b/Kernel/Arch/aarch64/Registers.h
@@ -762,4 +762,19 @@ struct alignas(u64) NZCV {
};
static_assert(sizeof(NZCV) == 8);
+// https://developer.arm.com/documentation/ddi0595/2021-03/AArch64-Registers/PMCCNTR-EL0--Performance-Monitors-Cycle-Count-Register
+// PMCCNTR_EL0, Performance Monitors Cycle Count Register
+struct alignas(u64) PMCCNTR_EL0 {
+ u64 CCNT : 64;
+
+ static inline PMCCNTR_EL0 read()
+ {
+ PMCCNTR_EL0 pmccntr_el0;
+ asm volatile("mrs %[value], pmccntr_el0"
+ : [value] "=r"(pmccntr_el0));
+ return pmccntr_el0;
+ }
+};
+static_assert(sizeof(PMCCNTR_EL0) == 8);
+
}