diff options
author | konrad <konrad@serenityos.org> | 2022-12-24 01:23:30 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-12-26 14:11:27 +0100 |
commit | 88d0d0d90ddf880031fef795f74538954f159cf3 (patch) | |
tree | 9fcbefe59c4dde33a1cc6d500a876e05515da6eb /Kernel/Arch/aarch64/Registers.h | |
parent | e1c3bf0ec03680d5cbc47750f69f7b70845fa51c (diff) | |
download | serenity-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.h | 15 |
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); + } |