rumpk/core/loader.zig

20 lines
585 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] Copying Subject Zero to 0x84000000...\n", 48);
@memcpy(dest[0..subject_bin.len], subject_bin);
console_write("[Loader] Jumping to Subject Zero...\n", 36);
const entry = @as(*const fn () void, @ptrFromInt(target_addr));
entry();
}