From 6185fb0f814368e2c85de7e444cecb177775aa32 Mon Sep 17 00:00:00 2001 From: Emmanuel Vadot Date: Thu, 19 Jul 2018 11:27:11 +0000 Subject: [PATCH] arm: Implement cpu_est_clockrate for armv[67] --- sys/arm/arm/machdep.c | 14 ++++++++++++++ sys/arm/include/pcpu.h | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/sys/arm/arm/machdep.c b/sys/arm/arm/machdep.c index 6bd31602f27..3c8a0982443 100644 --- a/sys/arm/arm/machdep.c +++ b/sys/arm/arm/machdep.c @@ -272,8 +272,22 @@ cpu_flush_dcache(void *ptr, size_t len) int cpu_est_clockrate(int cpu_id, uint64_t *rate) { +#if __ARM_ARCH >= 6 + struct pcpu *pc; + pc = pcpu_find(cpu_id); + if (pc == NULL || rate == NULL) + return (EINVAL); + + if (pc->pc_clock == 0) + return (EOPNOTSUPP); + + *rate = pc->pc_clock; + + return (0); +#else return (ENXIO); +#endif } void diff --git a/sys/arm/include/pcpu.h b/sys/arm/include/pcpu.h index ea2ba540339..bc8abd57b03 100644 --- a/sys/arm/include/pcpu.h +++ b/sys/arm/include/pcpu.h @@ -65,7 +65,8 @@ struct vmspace; int pc_dbreg_cmd; \ int pc_bp_harden_kind; \ uint32_t pc_original_actlr; \ - char __pad[147] + uint64_t pc_clock; \ + char __pad[139] #else #define PCPU_MD_FIELDS \ char __pad[93]