From b559b8dbf70a2c1b35ac09a19ef6d2064d3942f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gr=C3=A9goire?= Date: Fri, 3 Jul 2026 10:27:41 -0400 Subject: [PATCH] pl(pc): fix overflow in deadline calculation --- src/platform/pc/apic.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/platform/pc/apic.zig b/src/platform/pc/apic.zig index 26a01eb..0ba1832 100644 --- a/src/platform/pc/apic.zig +++ b/src/platform/pc/apic.zig @@ -199,7 +199,11 @@ fn timer_init() linksection(r.init) void { pub fn arm_timer(ns: r.Nanoseconds) void { if (amd64.cpu_features.tsc_deadline) { const now = amd64.rdtsc(); - const deadline = now + (ns * tsc.tsc_timer.frequency / std.time.ns_per_s); + + const delta: u64 = @intCast((@as(u128, ns) * tsc.tsc_timer.frequency) / std.time.ns_per_s); + + const deadline = now +% delta; + amd64.write_msr(.TscDeadline, deadline); return; }