Kernel/aarch64: Initialize TimeManagement in init.cpp

Also remove the check for aarch64 in AK/Format.cpp, so now the format
functions will prepend the time since boot!
This commit is contained in:
Timon Kruiper 2022-10-17 15:28:48 +02:00 committed by Gunnar Beutner
parent 01a14ac7af
commit c7aa05cdcc
Notes: sideshowbarker 2024-07-17 09:47:09 +09:00
2 changed files with 8 additions and 8 deletions

View file

@ -933,10 +933,8 @@ void vdmesgln(StringView fmtstr, TypeErasedFormatParams& params)
# ifdef AK_OS_SERENITY
struct timespec ts = {};
# if !ARCH(AARCH64)
if (TimeManagement::is_initialized())
ts = TimeManagement::the().monotonic_time(TimePrecision::Coarse).to_timespec();
# endif
if (Kernel::Processor::is_initialized() && Kernel::Thread::current()) {
auto& thread = *Kernel::Thread::current();

View file

@ -18,7 +18,6 @@
#include <Kernel/Arch/aarch64/CPU.h>
#include <Kernel/Arch/aarch64/RPi/Framebuffer.h>
#include <Kernel/Arch/aarch64/RPi/Mailbox.h>
#include <Kernel/Arch/aarch64/RPi/Timer.h>
#include <Kernel/Arch/aarch64/RPi/UART.h>
#include <Kernel/Arch/aarch64/Registers.h>
#include <Kernel/Arch/aarch64/TrapFrame.h>
@ -144,20 +143,23 @@ extern "C" [[noreturn]] void init()
InterruptManagement::initialize();
Processor::enable_interrupts();
TimeManagement::initialize(0);
auto firmware_version = query_firmware_version();
dmesgln("Firmware version: {}", firmware_version);
auto& timer = RPi::Timer::the();
timer.set_interrupt_interval_usec(1'000'000);
timer.enable_interrupt_mode();
dmesgln("Enter loop");
// This will not disable interrupts, so the timer will still fire and show that
// interrupts are working!
for (;;)
for (u32 i = 0;; i++) {
asm volatile("wfi");
// NOTE: This shows that dmesgln now outputs the time since boot!
if (i % 250 == 0)
dmesgln("Timer fired!");
}
TODO_AARCH64();
}