From f8ef244100c854d7f049a6b4ad383d287ca3e9c8 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 20 May 2022 16:32:07 -0500 Subject: [PATCH] system/riscv64: Use dtb-based time cv for system_time * Fixes speedy-system_time in qemu Change-Id: I07ae4d984c09f2f2503bd45acc415c219f3b3f11 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5327 Reviewed-by: waddlesplash --- src/system/kernel/arch/riscv64/arch_cpu.cpp | 3 +-- .../kernel/arch/riscv64/arch_real_time_clock.cpp | 3 --- src/system/libroot/os/arch/riscv64/system_time.cpp | 11 ----------- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/system/kernel/arch/riscv64/arch_cpu.cpp b/src/system/kernel/arch/riscv64/arch_cpu.cpp index a42fc8b6ab..205f31955b 100644 --- a/src/system/kernel/arch/riscv64/arch_cpu.cpp +++ b/src/system/kernel/arch/riscv64/arch_cpu.cpp @@ -59,12 +59,11 @@ arch_cpu_init(kernel_args *args) cpu->cache_id[i] = -1; } -/* uint64 conversionFactor = (1LL << 32) * 1000000LL / args->arch_args.timerFrequency; __riscv64_setup_system_time(conversionFactor); -*/ + return B_OK; } diff --git a/src/system/kernel/arch/riscv64/arch_real_time_clock.cpp b/src/system/kernel/arch/riscv64/arch_real_time_clock.cpp index 9afd09a8ee..6e773d86bb 100644 --- a/src/system/kernel/arch/riscv64/arch_real_time_clock.cpp +++ b/src/system/kernel/arch/riscv64/arch_real_time_clock.cpp @@ -15,15 +15,12 @@ status_t arch_rtc_init(kernel_args *args, struct real_time_data *data) { -/* data->arch_data.system_time_conversion_factor = (1LL << 32) * 1000000LL / args->arch_args.timerFrequency; - dprintf("timerFrequency: %" B_PRIu64 "\n", args->arch_args.timerFrequency); dprintf("system_time_conversion_factor: %" B_PRIu64 "\n", data->arch_data.system_time_conversion_factor); -*/ return B_OK; } diff --git a/src/system/libroot/os/arch/riscv64/system_time.cpp b/src/system/libroot/os/arch/riscv64/system_time.cpp index b74bb9a6f3..3a5280019c 100644 --- a/src/system/libroot/os/arch/riscv64/system_time.cpp +++ b/src/system/libroot/os/arch/riscv64/system_time.cpp @@ -31,17 +31,6 @@ __riscv64_setup_system_time(uint64 cv) [[gnu::optimize("omit-frame-pointer")]] bigtime_t system_time() { - // TODO: Timer unit conversion needs fixed here - // QEMU and SiFive boards use diferent timer frequencies - return CpuTime(); -/* - uint64 time = CpuTime(); - uint64 lo = (uint32)time; - uint64 hi = time >> 32; - return ((lo * cv_factor) >> 32) + hi * cv_factor; -*/ -/* __uint128_t time = static_cast<__uint128_t>(CpuTime()) * cv_factor; return time >> 32; -*/ }