diff --git a/build.zig b/build.zig index 7ddd434..4fdcaa9 100644 --- a/build.zig +++ b/build.zig @@ -32,7 +32,7 @@ pub fn build(b: *std.Build) void { const config_module = zonfig.createConfigModule(b, zonfig_dep, "config.zig.zon", ".config.zig.zon"); const ksyms_module = b.createModule(.{ - .root_source_file = b.path("src/ksyms.zig"), + .root_source_file = b.path("build/ksyms_mod.zig"), .optimize = optimize, }); @@ -70,9 +70,18 @@ pub fn build(b: *std.Build) void { }, }); + const boot_info_module = b.createModule(.{ + .root_source_file = b.path("src/loader/info.zig"), + .optimize = optimize, + .imports = &.{ + .{ .name = "arch", .module = arch_module }, + }, + }); + const kernel_nosym = addKernel(b, plat, optimize, config_module, ksyms_module, rtl_module, arch_module); kernel_nosym.root_module.addAssemblyFile(empty_ksyms_s); + kernel_nosym.root_module.addImport("boot_info", boot_info_module); b.step("kernel-nosym", "Build nosym kernel").dependOn(&kernel_nosym.step); @@ -88,11 +97,14 @@ pub fn build(b: *std.Build) void { const loader = addLoader(b, plat, optimize, config_module, rtl_module, arch_module); + kernel.root_module.addImport("boot_info", boot_info_module); + loader.root_module.addImport("boot_info", boot_info_module); + b.default_step.dependOn(&b.addInstallArtifact(loader, .{}).step); b.default_step.dependOn(&b.addInstallArtifact(kernel, .{}).step); const docs_module = b.createModule(.{ - .root_source_file = b.path("src/root.zig"), + .root_source_file = b.path("src/sys/root.zig"), .target = b.graph.host, .imports = &.{ .{ .name = "config", .module = config_module }, @@ -171,7 +183,7 @@ fn addKernel(b: *std.Build, plat: config.Platform, optimize: std.builtin.Optimiz const kernel = b.addExecutable(.{ .name = name, .root_module = b.createModule(.{ - .root_source_file = b.path("src/root.zig"), + .root_source_file = b.path("src/sys/root.zig"), .target = target, .optimize = optimize, }), @@ -220,11 +232,11 @@ fn addKernel(b: *std.Build, plat: config.Platform, optimize: std.builtin.Optimiz switch (plat.arch) { .x86_64 => { - kernel.root_module.addAssemblyFile(b.path("src/kern/amd64/locore.s")); - kernel.root_module.addAssemblyFile(b.path("src/platform/pc/ap.s")); + kernel.root_module.addAssemblyFile(b.path("src/sys/kern/amd64/locore.s")); + kernel.root_module.addAssemblyFile(b.path("src/sys/platform/pc/ap.s")); }, .riscv64 => { - kernel.root_module.addAssemblyFile(b.path("src/kern/riscv64/locore.s")); + kernel.root_module.addAssemblyFile(b.path("src/sys/kern/riscv64/locore.s")); }, else => {}, } diff --git a/src/ksyms.zig b/build/ksyms_mod.zig similarity index 100% rename from src/ksyms.zig rename to build/ksyms_mod.zig diff --git a/build/run.zig b/build/run.zig index 7b326ff..7f3e6f6 100644 --- a/build/run.zig +++ b/build/run.zig @@ -58,7 +58,7 @@ pub fn addRun(b: *std.Build, kernel: *std.Build.Step.Compile, loader: *std.Build switch (plat.arch) { .x86_64 => { - qemu.addArgs(&.{ "-serial", "stdio", "-m", "1G", "-smp", "1" }); + qemu.addArgs(&.{ "-serial", "stdio", "-m", "1G", "-smp", "4" }); if (!debug and builtin.target.os.tag == .linux and builtin.cpu.arch == .x86_64) qemu.addArgs(&.{ "-enable-kvm", "-cpu", "host,+invtsc" }); }, diff --git a/src/bootvid/bootvid.zig b/src/sys/bootvid/bootvid.zig similarity index 100% rename from src/bootvid/bootvid.zig rename to src/sys/bootvid/bootvid.zig diff --git a/src/bootvid/sun12x22-ascii.psf b/src/sys/bootvid/sun12x22-ascii.psf similarity index 100% rename from src/bootvid/sun12x22-ascii.psf rename to src/sys/bootvid/sun12x22-ascii.psf diff --git a/src/ex/init.zig b/src/sys/ex/init.zig similarity index 100% rename from src/ex/init.zig rename to src/sys/ex/init.zig diff --git a/src/ex/private.zig b/src/sys/ex/private.zig similarity index 100% rename from src/ex/private.zig rename to src/sys/ex/private.zig diff --git a/src/ex/root.zig b/src/sys/ex/root.zig similarity index 100% rename from src/ex/root.zig rename to src/sys/ex/root.zig diff --git a/src/ex/string.zig b/src/sys/ex/string.zig similarity index 100% rename from src/ex/string.zig rename to src/sys/ex/string.zig diff --git a/src/ex/vmem.zig b/src/sys/ex/vmem.zig similarity index 100% rename from src/ex/vmem.zig rename to src/sys/ex/vmem.zig diff --git a/src/ex/work.zig b/src/sys/ex/work.zig similarity index 100% rename from src/ex/work.zig rename to src/sys/ex/work.zig diff --git a/src/kern/amd64/impl.zig b/src/sys/kern/amd64/impl.zig similarity index 100% rename from src/kern/amd64/impl.zig rename to src/sys/kern/amd64/impl.zig diff --git a/src/kern/amd64/init.zig b/src/sys/kern/amd64/init.zig similarity index 100% rename from src/kern/amd64/init.zig rename to src/sys/kern/amd64/init.zig diff --git a/src/kern/amd64/int.zig b/src/sys/kern/amd64/int.zig similarity index 100% rename from src/kern/amd64/int.zig rename to src/sys/kern/amd64/int.zig diff --git a/src/kern/amd64/locore.s b/src/sys/kern/amd64/locore.s similarity index 100% rename from src/kern/amd64/locore.s rename to src/sys/kern/amd64/locore.s diff --git a/src/kern/cpu.zig b/src/sys/kern/cpu.zig similarity index 100% rename from src/kern/cpu.zig rename to src/sys/kern/cpu.zig diff --git a/src/kern/dpc.zig b/src/sys/kern/dpc.zig similarity index 100% rename from src/kern/dpc.zig rename to src/sys/kern/dpc.zig diff --git a/src/kern/event.zig b/src/sys/kern/event.zig similarity index 100% rename from src/kern/event.zig rename to src/sys/kern/event.zig diff --git a/src/kern/init.zig b/src/sys/kern/init.zig similarity index 100% rename from src/kern/init.zig rename to src/sys/kern/init.zig diff --git a/src/kern/ipi.zig b/src/sys/kern/ipi.zig similarity index 100% rename from src/kern/ipi.zig rename to src/sys/kern/ipi.zig diff --git a/src/kern/ipl.zig b/src/sys/kern/ipl.zig similarity index 100% rename from src/kern/ipl.zig rename to src/sys/kern/ipl.zig diff --git a/src/kern/log.zig b/src/sys/kern/log.zig similarity index 100% rename from src/kern/log.zig rename to src/sys/kern/log.zig diff --git a/src/kern/log_ring.zig b/src/sys/kern/log_ring.zig similarity index 100% rename from src/kern/log_ring.zig rename to src/sys/kern/log_ring.zig diff --git a/src/kern/mutex.zig b/src/sys/kern/mutex.zig similarity index 100% rename from src/kern/mutex.zig rename to src/sys/kern/mutex.zig diff --git a/src/kern/panic.zig b/src/sys/kern/panic.zig similarity index 100% rename from src/kern/panic.zig rename to src/sys/kern/panic.zig diff --git a/src/kern/private.zig b/src/sys/kern/private.zig similarity index 100% rename from src/kern/private.zig rename to src/sys/kern/private.zig diff --git a/src/kern/queue.zig b/src/sys/kern/queue.zig similarity index 100% rename from src/kern/queue.zig rename to src/sys/kern/queue.zig diff --git a/src/kern/riscv64/impl.zig b/src/sys/kern/riscv64/impl.zig similarity index 100% rename from src/kern/riscv64/impl.zig rename to src/sys/kern/riscv64/impl.zig diff --git a/src/kern/riscv64/int.zig b/src/sys/kern/riscv64/int.zig similarity index 100% rename from src/kern/riscv64/int.zig rename to src/sys/kern/riscv64/int.zig diff --git a/src/kern/riscv64/locore.s b/src/sys/kern/riscv64/locore.s similarity index 100% rename from src/kern/riscv64/locore.s rename to src/sys/kern/riscv64/locore.s diff --git a/src/kern/root.zig b/src/sys/kern/root.zig similarity index 100% rename from src/kern/root.zig rename to src/sys/kern/root.zig diff --git a/src/kern/sched.zig b/src/sys/kern/sched.zig similarity index 100% rename from src/kern/sched.zig rename to src/sys/kern/sched.zig diff --git a/src/kern/shootdown.zig b/src/sys/kern/shootdown.zig similarity index 100% rename from src/kern/shootdown.zig rename to src/sys/kern/shootdown.zig diff --git a/src/kern/smr.zig b/src/sys/kern/smr.zig similarity index 100% rename from src/kern/smr.zig rename to src/sys/kern/smr.zig diff --git a/src/kern/spinlock.zig b/src/sys/kern/spinlock.zig similarity index 100% rename from src/kern/spinlock.zig rename to src/sys/kern/spinlock.zig diff --git a/src/kern/thread.zig b/src/sys/kern/thread.zig similarity index 100% rename from src/kern/thread.zig rename to src/sys/kern/thread.zig diff --git a/src/kern/time.zig b/src/sys/kern/time.zig similarity index 100% rename from src/kern/time.zig rename to src/sys/kern/time.zig diff --git a/src/kern/timer.zig b/src/sys/kern/timer.zig similarity index 100% rename from src/kern/timer.zig rename to src/sys/kern/timer.zig diff --git a/src/kern/tunable.zig b/src/sys/kern/tunable.zig similarity index 100% rename from src/kern/tunable.zig rename to src/sys/kern/tunable.zig diff --git a/src/kern/turnstile.zig b/src/sys/kern/turnstile.zig similarity index 100% rename from src/kern/turnstile.zig rename to src/sys/kern/turnstile.zig diff --git a/src/kern/wait.zig b/src/sys/kern/wait.zig similarity index 100% rename from src/kern/wait.zig rename to src/sys/kern/wait.zig diff --git a/src/kern/warden.zig b/src/sys/kern/warden.zig similarity index 100% rename from src/kern/warden.zig rename to src/sys/kern/warden.zig diff --git a/src/mm/amd64/impl.zig b/src/sys/mm/amd64/impl.zig similarity index 100% rename from src/mm/amd64/impl.zig rename to src/sys/mm/amd64/impl.zig diff --git a/src/mm/balance.zig b/src/sys/mm/balance.zig similarity index 100% rename from src/mm/balance.zig rename to src/sys/mm/balance.zig diff --git a/src/mm/heap.zig b/src/sys/mm/heap.zig similarity index 100% rename from src/mm/heap.zig rename to src/sys/mm/heap.zig diff --git a/src/mm/init.zig b/src/sys/mm/init.zig similarity index 100% rename from src/mm/init.zig rename to src/sys/mm/init.zig diff --git a/src/mm/phys.zig b/src/sys/mm/phys.zig similarity index 100% rename from src/mm/phys.zig rename to src/sys/mm/phys.zig diff --git a/src/mm/pmap.zig b/src/sys/mm/pmap.zig similarity index 100% rename from src/mm/pmap.zig rename to src/sys/mm/pmap.zig diff --git a/src/mm/private.zig b/src/sys/mm/private.zig similarity index 100% rename from src/mm/private.zig rename to src/sys/mm/private.zig diff --git a/src/mm/riscv64/impl.zig b/src/sys/mm/riscv64/impl.zig similarity index 100% rename from src/mm/riscv64/impl.zig rename to src/sys/mm/riscv64/impl.zig diff --git a/src/mm/root.zig b/src/sys/mm/root.zig similarity index 100% rename from src/mm/root.zig rename to src/sys/mm/root.zig diff --git a/src/mm/tlb.zig b/src/sys/mm/tlb.zig similarity index 100% rename from src/mm/tlb.zig rename to src/sys/mm/tlb.zig diff --git a/src/mm/zone.zig b/src/sys/mm/zone.zig similarity index 100% rename from src/mm/zone.zig rename to src/sys/mm/zone.zig diff --git a/src/platform/acpi/hpet.zig b/src/sys/platform/acpi/hpet.zig similarity index 100% rename from src/platform/acpi/hpet.zig rename to src/sys/platform/acpi/hpet.zig diff --git a/src/platform/acpi/madt.zig b/src/sys/platform/acpi/madt.zig similarity index 100% rename from src/platform/acpi/madt.zig rename to src/sys/platform/acpi/madt.zig diff --git a/src/platform/acpi/root.zig b/src/sys/platform/acpi/root.zig similarity index 100% rename from src/platform/acpi/root.zig rename to src/sys/platform/acpi/root.zig diff --git a/src/platform/acpi/timer.zig b/src/sys/platform/acpi/timer.zig similarity index 100% rename from src/platform/acpi/timer.zig rename to src/sys/platform/acpi/timer.zig diff --git a/src/platform/pc/ap.s b/src/sys/platform/pc/ap.s similarity index 100% rename from src/platform/pc/ap.s rename to src/sys/platform/pc/ap.s diff --git a/src/platform/pc/apic.zig b/src/sys/platform/pc/apic.zig similarity index 100% rename from src/platform/pc/apic.zig rename to src/sys/platform/pc/apic.zig diff --git a/src/platform/pc/impl.zig b/src/sys/platform/pc/impl.zig similarity index 100% rename from src/platform/pc/impl.zig rename to src/sys/platform/pc/impl.zig diff --git a/src/platform/pc/pvclock.zig b/src/sys/platform/pc/pvclock.zig similarity index 100% rename from src/platform/pc/pvclock.zig rename to src/sys/platform/pc/pvclock.zig diff --git a/src/platform/pc/smp.zig b/src/sys/platform/pc/smp.zig similarity index 100% rename from src/platform/pc/smp.zig rename to src/sys/platform/pc/smp.zig diff --git a/src/platform/pc/tsc.zig b/src/sys/platform/pc/tsc.zig similarity index 100% rename from src/platform/pc/tsc.zig rename to src/sys/platform/pc/tsc.zig diff --git a/src/platform/riscv64/impl.zig b/src/sys/platform/riscv64/impl.zig similarity index 100% rename from src/platform/riscv64/impl.zig rename to src/sys/platform/riscv64/impl.zig diff --git a/src/platform/root.zig b/src/sys/platform/root.zig similarity index 100% rename from src/platform/root.zig rename to src/sys/platform/root.zig diff --git a/src/proc/private.zig b/src/sys/proc/private.zig similarity index 100% rename from src/proc/private.zig rename to src/sys/proc/private.zig diff --git a/src/proc/root.zig b/src/sys/proc/root.zig similarity index 100% rename from src/proc/root.zig rename to src/sys/proc/root.zig diff --git a/src/proc/thread.zig b/src/sys/proc/thread.zig similarity index 100% rename from src/proc/thread.zig rename to src/sys/proc/thread.zig diff --git a/src/rcu/hashtable.zig b/src/sys/rcu/hashtable.zig similarity index 100% rename from src/rcu/hashtable.zig rename to src/sys/rcu/hashtable.zig diff --git a/src/rcu/root.zig b/src/sys/rcu/root.zig similarity index 100% rename from src/rcu/root.zig rename to src/sys/rcu/root.zig diff --git a/src/root.zig b/src/sys/root.zig similarity index 97% rename from src/root.zig rename to src/sys/root.zig index 4f14a4f..ab33535 100644 --- a/src/root.zig +++ b/src/sys/root.zig @@ -7,7 +7,7 @@ pub const ksyms = @import("ksyms"); pub const arch = @import("arch"); pub const mm = @import("mm/root.zig"); pub const ps = @import("proc/root.zig"); -pub const BootInfo = @import("loader/info.zig"); +pub const BootInfo = @import("boot_info"); pub const tests = @import("tests/root.zig"); pub const rcu = @import("rcu/root.zig"); pub const bv = @import("bootvid/bootvid.zig"); diff --git a/src/tests/fireworks.zig b/src/sys/tests/fireworks.zig similarity index 100% rename from src/tests/fireworks.zig rename to src/sys/tests/fireworks.zig diff --git a/src/tests/root.zig b/src/sys/tests/root.zig similarity index 100% rename from src/tests/root.zig rename to src/sys/tests/root.zig