27 lines
767 B
Zig
27 lines
767 B
Zig
const std = @import("std");
|
|
|
|
extern fn console_write(ptr: [*]const u8, len: usize) void;
|
|
|
|
// Embed the Subject Zero binary
|
|
export var subject_bin = @embedFile("subject.bin");
|
|
|
|
export fn launch_subject() void {
|
|
const target_addr: usize = 0x84000000;
|
|
const dest = @as([*]u8, @ptrFromInt(target_addr));
|
|
|
|
console_write("[Loader] Loading Subject Zero...\n", 33);
|
|
@memcpy(dest[0..subject_bin.len], subject_bin);
|
|
|
|
console_write("[Loader] Jumping...\n", 20);
|
|
|
|
const entry = @as(*const fn () void, @ptrFromInt(target_addr));
|
|
entry();
|
|
}
|
|
|
|
pub fn panic(msg: []const u8, _: ?*std.builtin.StackTrace, _: ?usize) noreturn {
|
|
console_write("[Loader] PANIC: ", 16);
|
|
console_write(msg.ptr, msg.len);
|
|
console_write("\n", 1);
|
|
while (true) {}
|
|
}
|