aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-07-31 22:06:39 +0200
committerHimbeer <himbeer@disroot.org>2024-07-31 22:07:25 +0200
commitd1099518ff4723d8507726b2332a7ecacf6cd7b6 (patch)
tree6034a7f2412642d13234e8cea1322b81f8127605
parentce80670795a8c3dc8840a4b034a25b4aa07b4608 (diff)
Revert "syscall: Provide userinit access (permissions controlled via paging in the future)"
This reverts commit 270c8f02867bf959fa86a44fcb76bb0680571695.
-rw-r--r--linker.ld7
-rw-r--r--src/lib/paging.zig3
-rw-r--r--src/lib/process.zig4
-rw-r--r--src/lib/syscall.zig9
-rw-r--r--src/lib/userinit.zig2
5 files changed, 1 insertions, 24 deletions
diff --git a/linker.ld b/linker.ld
index 1d16384..30c410a 100644
--- a/linker.ld
+++ b/linker.ld
@@ -38,13 +38,6 @@ SECTIONS {
PROVIDE(_rodata_end = .);
} > ram AT > ram : lo_r
- .userinit : ALIGN(4K) {
- PROVIDE(_userinit_start = .);
-
- *(.userinit .userinit.*)
-
- PROVIDE(_userinit_end = .);
- } > ram AT > ram : lo_r
.data : ALIGN(4K) {
PROVIDE(_data_start = .);
diff --git a/src/lib/paging.zig b/src/lib/paging.zig
index d69a17c..dd1feeb 100644
--- a/src/lib/paging.zig
+++ b/src/lib/paging.zig
@@ -14,8 +14,6 @@ pub const text_start = @extern(*anyopaque, .{ .name = "_text_start" });
pub const text_end = @extern(*anyopaque, .{ .name = "_text_end" });
pub const rodata_start = @extern(*anyopaque, .{ .name = "_rodata_start" });
pub const rodata_end = @extern(*anyopaque, .{ .name = "_rodata_end" });
-pub const userinit_start = @extern(*anyopaque, .{ .name = "_userinit_start" });
-pub const userinit_end = @extern(*anyopaque, .{ .name = "_userinit_end" });
pub const data_start = @extern(*anyopaque, .{ .name = "_data_start" });
pub const data_end = @extern(*anyopaque, .{ .name = "_data_end" });
pub const bss_start = @extern(*anyopaque, .{ .name = "_bss_start" });
@@ -460,7 +458,6 @@ pub const Table = struct {
pub fn mapKernel(root: *Table) !void {
try root.identityMapRange(@intFromPtr(text_start), @intFromPtr(text_end), EntryFlags.readExec);
try root.identityMapRange(@intFromPtr(rodata_start), @intFromPtr(rodata_end), EntryFlags.readOnly);
- try root.identityMapRange(@intFromPtr(userinit_start), @intFromPtr(userinit_end), EntryFlags.readOnly);
try root.identityMapRange(@intFromPtr(data_start), @intFromPtr(data_end), EntryFlags.readWrite);
try root.identityMapRange(@intFromPtr(bss_start), @intFromPtr(bss_end), EntryFlags.readWrite);
try root.identityMapRange(@intFromPtr(stack_start), @intFromPtr(stack_end), EntryFlags.readWrite);
diff --git a/src/lib/process.zig b/src/lib/process.zig
index 99a89bd..c8e6d5e 100644
--- a/src/lib/process.zig
+++ b/src/lib/process.zig
@@ -235,10 +235,6 @@ pub fn create(allocator: Allocator, elf_buf: []align(@alignOf(elf.Elf64_Ehdr)) c
try procmem.mapKernel();
- const userinit_start = @intFromPtr(paging.userinit_start);
- const userinit_end = @intFromPtr(paging.userinit_end);
- try procmem.identityMapRange(userinit_start, userinit_end, paging.EntryFlags.userReadOnly);
-
const parse_source = std.io.fixedBufferStream(elf_buf);
var it = hdr.program_header_iterator(parse_source);
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig
index ca8e2c8..5ca10cf 100644
--- a/src/lib/syscall.zig
+++ b/src/lib/syscall.zig
@@ -11,7 +11,6 @@ const mem = @import("mem.zig");
const paging = @import("paging.zig");
const process = @import("process.zig");
const riscv = @import("riscv.zig");
-const userinit = @import("userinit.zig");
pub const Error = error{
ZeroAddressSupplied,
@@ -30,7 +29,6 @@ pub fn handler(proc: *process.Info, trap_frame: *TrapFrame) !void {
100004 => trap_frame.setReturnValue(terminate(proc, trap_frame)),
100005 => trap_frame.setReturnValue(processId(proc)),
100006 => trap_frame.setReturnValue(threadId(proc)),
- 100007 => trap_frame.setReturnValue(rawUserinit(trap_frame)),
100008 => trap_frame.setReturnValue(devicesByKind(trap_frame)),
100009 => trap_frame.setReturnValue(join(proc, trap_frame)),
100010 => trap_frame.setReturnValue(leave(proc, trap_frame)),
@@ -148,13 +146,6 @@ fn threadId(proc: *const process.Info) usize {
return proc.thread_id;
}
-// rawUserinit(ptr: *[*]const u8) usize
-fn rawUserinit(trap_frame: *const TrapFrame) usize {
- const ptr: *[*]const u8 = @ptrFromInt(trap_frame.general_purpose_registers[10]);
- ptr.* = userinit.tarball;
- return userinit.tarball.len;
-}
-
// devicesByKind(kind: hwinfo.DevKind, devices: [*]hwinfo.Dev, len: usize) !usize
fn devicesByKind(trap_frame: *const TrapFrame) !usize {
const kind: hwinfo.DevKind = @enumFromInt(trap_frame.general_purpose_registers[10]);
diff --git a/src/lib/userinit.zig b/src/lib/userinit.zig
index 7eb0eea..8c77cdd 100644
--- a/src/lib/userinit.zig
+++ b/src/lib/userinit.zig
@@ -2,4 +2,4 @@
//
// SPDX-License-Identifier: AGPL-3.0-or-later
-pub export var tarball linksection(".userinit") = @embedFile("cfg/userinit.tar");
+pub const tarball = @embedFile("cfg/userinit.tar");