diff options
Diffstat (limited to 'src/lib/trap.zig')
-rw-r--r-- | src/lib/trap.zig | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/src/lib/trap.zig b/src/lib/trap.zig deleted file mode 100644 index 99db8ba..0000000 --- a/src/lib/trap.zig +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-FileCopyrightText: 2024 Himbeer <himbeer@disroot.org> -// -// SPDX-License-Identifier: AGPL-3.0-or-later - -pub const Frame = extern struct { - general_purpose_registers: [32]usize, // Offset: 0 - floating_point_registers: [32]usize, // Offset: 256 - satp: usize, // Offset: 512 - stack_pointer: *allowzero u8, // Offset: 520 - hart_id: usize, // Offset: 528 - - pub fn setReturnValue(self: *Frame, value: anytype) void { - switch (@typeInfo(@TypeOf(value))) { - .ErrorUnion => self.returnErrorUnion(value), - .ErrorSet => self.returnError(value), - else => self.returnValue(value), - } - } - - fn returnErrorUnion(self: *Frame, error_union: anytype) void { - if (error_union) |value| { - self.returnValue(value); - } else |err| { - self.returnError(err); - } - } - - fn returnError(self: *Frame, err: anyerror) void { - self.general_purpose_registers[11] = @intFromError(err); - } - - fn returnValue(self: *Frame, value: anytype) void { - self.general_purpose_registers[11] = 0; - if (@typeInfo(@TypeOf(value)) != .Void) { - self.general_purpose_registers[10] = @bitCast(value); - } - } -}; |