aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linker.ld17
-rw-r--r--src/kernel.zig2
-rw-r--r--src/lib/paging.zig6
3 files changed, 3 insertions, 22 deletions
diff --git a/linker.ld b/linker.ld
index c02b466..fa6e7f0 100644
--- a/linker.ld
+++ b/linker.ld
@@ -34,6 +34,7 @@ SECTIONS {
PROVIDE(_rodata_start = .);
*(.rodata .rodata.*)
+ *(.srodata .srodata.*)
PROVIDE(_rodata_end = .);
} > ram AT > ram : lo_r
@@ -41,29 +42,17 @@ SECTIONS {
PROVIDE(_data_start = .);
*(.data .data.*)
-
- PROVIDE(_data_end = .);
- } > ram AT > ram : lo_rw
- .sdata : ALIGN(4K) {
- PROVIDE(_sdata_start = .);
-
*(.sdata .sdata.*)
- PROVIDE(_sdata_end = .);
+ PROVIDE(_data_end = .);
} > ram AT > ram : lo_rw
.bss : ALIGN(4K) {
PROVIDE(_bss_start = .);
*(.bss .bss.*)
-
- PROVIDE(_bss_end = .);
- } > ram AT > ram : lo_rw
- .sbss : ALIGN(4K) {
- PROVIDE(_sbss_start = .);
-
*(.sbss .sbss.*)
- PROVIDE(_sbss_end = .);
+ PROVIDE(_bss_end = .);
} > ram AT > ram : lo_rw
/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
diff --git a/src/kernel.zig b/src/kernel.zig
index 2478a48..47d1f05 100644
--- a/src/kernel.zig
+++ b/src/kernel.zig
@@ -146,9 +146,7 @@ fn pagedRun() !noreturn {
try w.print(".text: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (r-x)\r\n", .{ @intFromPtr(paging.text_start), @intFromPtr(paging.text_end) });
try w.print(".rodata: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (r--)\r\n", .{ @intFromPtr(paging.rodata_start), @intFromPtr(paging.rodata_end) });
try w.print(".data: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (rw-)\r\n", .{ @intFromPtr(paging.data_start), @intFromPtr(paging.data_end) });
- try w.print(".sdata: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (rw-)\r\n", .{ @intFromPtr(paging.sdata_start), @intFromPtr(paging.sdata_end) });
try w.print(".bss: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (rw-)\r\n", .{ @intFromPtr(paging.bss_start), @intFromPtr(paging.bss_end) });
- try w.print(".sbss: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (rw-)\r\n", .{ @intFromPtr(paging.sbss_start), @intFromPtr(paging.sbss_end) });
try w.print("Stack: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (rw-)\r\n", .{ @intFromPtr(paging.stack_start), @intFromPtr(paging.stack_end) });
try w.print("Trap Stack: 0x{x:0>8} - 0x{x:0>8} -> identity mapped (rw-)\r\n", .{ @intFromPtr(paging.stvec_stack_start), @intFromPtr(paging.stvec_stack_end) });
try w.print("\r\n", .{});
diff --git a/src/lib/paging.zig b/src/lib/paging.zig
index 52ea5a6..129fc84 100644
--- a/src/lib/paging.zig
+++ b/src/lib/paging.zig
@@ -14,12 +14,8 @@ pub const rodata_start = @extern(*anyopaque, .{ .name = "_rodata_start" });
pub const rodata_end = @extern(*anyopaque, .{ .name = "_rodata_end" });
pub const data_start = @extern(*anyopaque, .{ .name = "_data_start" });
pub const data_end = @extern(*anyopaque, .{ .name = "_data_end" });
-pub const sdata_start = @extern(*anyopaque, .{ .name = "_sdata_start" });
-pub const sdata_end = @extern(*anyopaque, .{ .name = "_sdata_end" });
pub const bss_start = @extern(*anyopaque, .{ .name = "_bss_start" });
pub const bss_end = @extern(*anyopaque, .{ .name = "_bss_end" });
-pub const sbss_start = @extern(*anyopaque, .{ .name = "_sbss_start" });
-pub const sbss_end = @extern(*anyopaque, .{ .name = "_sbss_end" });
pub const stack_start = @extern(*anyopaque, .{ .name = "_stack_start" });
pub const stack_end = @extern(*anyopaque, .{ .name = "_stack_end" });
pub const stvec_stack_start = @extern(*anyopaque, .{ .name = "_stvec_stack_start" });
@@ -432,9 +428,7 @@ pub const Table = struct {
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(data_start), @intFromPtr(data_end), EntryFlags.readWrite);
- try root.identityMapRange(@intFromPtr(sdata_start), @intFromPtr(sdata_end), EntryFlags.readWrite);
try root.identityMapRange(@intFromPtr(bss_start), @intFromPtr(bss_end), EntryFlags.readWrite);
- try root.identityMapRange(@intFromPtr(sbss_start), @intFromPtr(sbss_end), EntryFlags.readWrite);
try root.identityMapRange(@intFromPtr(stack_start), @intFromPtr(stack_end), EntryFlags.readWrite);
try root.identityMapRange(@intFromPtr(stvec_stack_start), @intFromPtr(stvec_stack_end), EntryFlags.readWrite);
try root.identityMapRange(@intFromPtr(heap_start), @intFromPtr(heap_end), EntryFlags.readWrite);