aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hwi.zig1
-rw-r--r--src/kernel.zig1
-rw-r--r--src/lib/Console.zig1
-rw-r--r--src/lib/instructions.zig9
-rw-r--r--src/lib/interrupts.zig1
-rw-r--r--src/lib/paging.zig1
-rw-r--r--src/lib/plic.zig1
-rw-r--r--src/lib/process.zig5
-rw-r--r--src/lib/sbi/debug_console.zig1
-rw-r--r--src/lib/sbi/legacy.zig1
-rw-r--r--src/lib/sbi/time.zig8
-rw-r--r--src/lib/syscall.zig1
12 files changed, 4 insertions, 27 deletions
diff --git a/src/hwi.zig b/src/hwi.zig
index 7d908fa..b8736bb 100644
--- a/src/hwi.zig
+++ b/src/hwi.zig
@@ -4,7 +4,6 @@
const builtin = @import("builtin");
const std = @import("std");
-
const hwinfo = @import("lib/hwinfo.zig");
pub fn main() !void {
diff --git a/src/kernel.zig b/src/kernel.zig
index e31ba7b..c7c02cf 100644
--- a/src/kernel.zig
+++ b/src/kernel.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const Console = @import("lib/Console.zig");
const hwinfo = @import("lib/hwinfo.zig");
const instructions = @import("lib/instructions.zig");
diff --git a/src/lib/Console.zig b/src/lib/Console.zig
index 1e2920d..8a64406 100644
--- a/src/lib/Console.zig
+++ b/src/lib/Console.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const debug_console = @import("sbi/debug_console.zig");
const legacy = @import("sbi/legacy.zig");
diff --git a/src/lib/instructions.zig b/src/lib/instructions.zig
index d9e5bf8..8c5a4ee 100644
--- a/src/lib/instructions.zig
+++ b/src/lib/instructions.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const interrupts = @import("interrupts.zig");
const paging = @import("paging.zig");
@@ -50,13 +49,6 @@ pub const SbiRet = struct {
val: isize,
};
-// # Arguments
-//
-// * ext_id: Extension ID
-// * fn_id: Function ID (within extension)
-// * a0: Argument 0
-// * a1: Argument 1
-// * a2: Argument 2
pub fn ecall(ext_id: usize, fn_id: usize, a0: usize, a1: usize, a2: usize) SbiRet {
var ret = SbiRet{ .err = 0, .val = 0 };
@@ -90,6 +82,7 @@ pub const sip = Csr(interrupts.Enable, "sip");
pub const sscratch = Csr(usize, "sscratch");
pub const sepc = Csr(usize, "sepc");
pub const stval = Csr(usize, "stval");
+pub const time = Csr(usize, "time");
pub fn Csr(comptime T: type, csr: []const u8) type {
if (csr.len > 8) @compileError("CSR name length exceeds 8 characters");
diff --git a/src/lib/interrupts.zig b/src/lib/interrupts.zig
index f68a5f1..086e38e 100644
--- a/src/lib/interrupts.zig
+++ b/src/lib/interrupts.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const Console = @import("Console.zig");
const TrapFrame = @import("TrapFrame.zig");
const instructions = @import("instructions.zig");
diff --git a/src/lib/paging.zig b/src/lib/paging.zig
index 31f4df1..84bc7dc 100644
--- a/src/lib/paging.zig
+++ b/src/lib/paging.zig
@@ -6,7 +6,6 @@
// are 39 bits wide. Sv32 and Sv48 are currently not implemented.
const std = @import("std");
-
const hwinfo = @import("hwinfo.zig");
const instructions = @import("instructions.zig");
diff --git a/src/lib/plic.zig b/src/lib/plic.zig
index 227b8b8..42af334 100644
--- a/src/lib/plic.zig
+++ b/src/lib/plic.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const hwinfo = @import("hwinfo.zig");
pub var default: Plic = undefined;
diff --git a/src/lib/process.zig b/src/lib/process.zig
index 6893136..8055936 100644
--- a/src/lib/process.zig
+++ b/src/lib/process.zig
@@ -4,24 +4,21 @@
const builtin = @import("builtin");
const std = @import("std");
-
const TrapFrame = @import("TrapFrame.zig");
const instructions = @import("instructions.zig");
const paging = @import("paging.zig");
const rethooks = @import("rethooks.zig");
const time = @import("sbi/time.zig");
-
const Allocator = std.mem.Allocator;
const elf = std.elf;
pub const schedule_interval_millis = 1;
pub var list = std.mem.zeroInit(std.DoublyLinkedList(Info), .{});
+var next_pid: u16 = 1;
const num_stack_pages = 2;
-var next_pid: u16 = 1;
-
pub const ScheduleError = error{
EmptySchedule,
NoInit,
diff --git a/src/lib/sbi/debug_console.zig b/src/lib/sbi/debug_console.zig
index afd249f..7959083 100644
--- a/src/lib/sbi/debug_console.zig
+++ b/src/lib/sbi/debug_console.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const instructions = @import("../instructions.zig");
const sbi = @import("../sbi.zig");
diff --git a/src/lib/sbi/legacy.zig b/src/lib/sbi/legacy.zig
index e544367..4b392cf 100644
--- a/src/lib/sbi/legacy.zig
+++ b/src/lib/sbi/legacy.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const instructions = @import("../instructions.zig");
const sbi = @import("../sbi.zig");
diff --git a/src/lib/sbi/time.zig b/src/lib/sbi/time.zig
index 1c54e7d..f799d09 100644
--- a/src/lib/sbi/time.zig
+++ b/src/lib/sbi/time.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const hwinfo = @import("../hwinfo.zig");
const instructions = @import("../instructions.zig");
const sbi = @import("../sbi.zig");
@@ -26,14 +25,11 @@ pub fn setTimer(stime_absolute: u64) !void {
}
pub fn interruptInMillis(millis: u64) !void {
- const stime = asm volatile (
- \\ csrr %[stime], time
- : [stime] "=r" (-> u64),
- );
+ const time = instructions.time.read();
var cpus = try hwinfo.byKind(.cpus);
const frequency = try cpus.next() orelse return error.NoCpusHwInfo;
const cycles = frequency.value / 1000 * millis;
- try setTimer(stime + cycles);
+ try setTimer(time + cycles);
}
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig
index 0edd367..57ba258 100644
--- a/src/lib/syscall.zig
+++ b/src/lib/syscall.zig
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
const std = @import("std");
-
const Console = @import("Console.zig");
const TrapFrame = @import("TrapFrame.zig");
const instructions = @import("instructions.zig");