From fd3f51eecaecc12806a573c38263df1de43ee8c2 Mon Sep 17 00:00:00 2001 From: hachem Date: Fri, 25 Sep 2026 18:08:17 +0200 Subject: feat: pit timer --- boot/timer.zig | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 boot/timer.zig (limited to 'boot/timer.zig') diff --git a/boot/timer.zig b/boot/timer.zig new file mode 100644 index 0000000..4569d6a --- /dev/null +++ b/boot/timer.zig @@ -0,0 +1,17 @@ +// PIT channel 0 tick counter +// configuring the PIT itself (outb to 0x43/0x40) is done in revo (kernel +// `pit_init`), since it's just port writes the VM can drive + +var ticks: u64 = 0; + +// called from the IRQ0 handler +pub fn onIrq() void { + const t: *volatile u64 = &ticks; + t.* +%= 1; +} + +// called from the event loop +pub fn now() u64 { + const t: *volatile u64 = &ticks; + return t.*; +} -- cgit v1.3