sylveos

Toy Operating System
Log | Files | Refs

commit bec24b32e7ba98c90eb70f25af83d5a11b184fb9
parent 18e68acfdd9b4d9ca827c37836aa5363b9553e39
Author: Sylvia Ivory <git@sivory.net>
Date:   Tue, 13 Jan 2026 15:55:10 -0800

Adjust build settings

Diffstat:
MJustfile | 4++--
Mbuild.zig | 9+++++----
Mlinker.ld | 2++
Msrc/root.zig | 10+++-------
4 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/Justfile b/Justfile @@ -4,5 +4,5 @@ build: lab name: zig build -Dlab={{ name }} -list: build - arm-none-eabi-objdump -D zig-out/bin/SylveOS +list name="SylveOS": build + arm-none-eabi-objdump -m armv6 -d zig-out/bin/{{ name }} diff --git a/build.zig b/build.zig @@ -10,6 +10,7 @@ const target: std.Target.Query = .{ .cpu_model = .{ .explicit = &std.Target.arm.cpu.arm1176jzf_s }, .cpu_features_add = std.Target.arm.cpu.arm1176jzf_s.features, .os_tag = .freestanding, + .abi = .none, }; fn add_exe(exe_name: []const u8, path: std.Build.LazyPath, b: *std.Build) !*std.Build.Step.Compile { @@ -50,14 +51,14 @@ fn lab(name: []const u8, units: []const []const u8, b: *std.Build) !void { const template = \\ const lab = @import("{s}"); - \\ export fn main() void {{ lab.{s}(); }} - \\ export fn abort() void {{ while(true) {{}} }} \\ export fn _start() callconv(.naked) noreturn {{ \\ asm volatile ( \\ \\ mov sp, 0x800000 - \\ \\ bl main - \\ \\ bl abort + \\ \\ bl %[main:P] + \\ : + \\ : [main] "X" (&lab.{s}) \\ ); + \\ while (true) {{ }} \\ }} ; diff --git a/linker.ld b/linker.ld @@ -7,6 +7,8 @@ * pi-install bootloader will copy the program it receives * to address 0x8000 and jump to it. */ +ENTRY(_start) + SECTIONS { /* link the code first at 0x8000. */ diff --git a/src/root.zig b/src/root.zig @@ -14,16 +14,12 @@ fn panic_handler(msg: []const u8, trace_addr: ?usize) noreturn { pub const panic = std.debug.FullPanic(panic_handler); -// Can't just use main.zig#main directly -export fn main() void { - _ = fake_main(); -} - export fn _start() callconv(.naked) noreturn { - // TODO; ask prof why asm volatile ( \\ mov sp, 0x800000 - \\ bl main + \\ bl %[main:P] \\ bl abort + : + : [main] "X" (&fake_main), ); }