// SPDX-FileCopyrightText: 2024 Himbeer // // SPDX-License-Identifier: AGPL-3.0-or-later pub const DevKind = enum(u32) { cpus, plic, pcie, pci, _, }; pub const Dev = extern struct { kind: DevKind, reg: Reg, value: u64, }; pub const Reg = extern struct { addr: u64, len: u64, pub fn slice(self: Reg, comptime T: type) []volatile T { const ptr: [*]volatile T = @ptrFromInt(self.addr); return ptr[0 .. self.len / @sizeOf(T)]; } };