aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/segments.s
diff options
context:
space:
mode:
authorGravatar ornitorrincos 2026-08-18 12:15:05 +0200
committerGravatar ornitorrincos 2026-08-18 12:15:05 +0200
commit132d3236bb884433bf94e961f6d32264e0334aec (patch)
tree06638976b06f019ea4037175ff228f8271057c44 /kernel/segments.s
Diffstat (limited to '')
-rw-r--r--kernel/segments.s21
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/segments.s b/kernel/segments.s
new file mode 100644
index 0000000..77e6502
--- /dev/null
+++ b/kernel/segments.s
@@ -0,0 +1,21 @@
+
+global asm_reload_segments
+
+section .text
+align 4
+
+asm_reload_segments:
+ push 0x08
+ lea rax, [rel .reload_cs]
+ push rax
+ retfq
+
+; 0z10 is 16 bytes in decimal, so this should reload the segment correctly
+.reload_cs:
+ mov ax, 0x10
+ mov ds, ax
+ mov es, ax
+ mov fs, ax
+ mov gs, ax
+ mov ss, ax
+ ret \ No newline at end of file