selectors, descriptors, more interrupt init
[3sys] / sys1 / kern / src / mem.asm
index 3a4bf85..54c04f3 100644 (file)
@@ -10,8 +10,26 @@ set_gdt:
        lgdt [gdtlim]
        ret
 
+       global setup_selectors
+setup_selectors:
+       ; set data selectors directly
+       mov ax, [esp + 8]
+       mov ss, ax
+       mov es, ax
+       mov ds, ax
+       mov gs, ax
+       mov fs, ax
+       ; set cs with a long jump
+       mov ax, [esp + 4]
+       mov [jseg], ax
+       mov dword [joffs], .setcs
+       jmp far [joffs]
+.setcs: ret
+       
+
        align 4
-       dw 0
+joffs  dd 0
+jseg   dw 0
 gdtlim dw 0
 gdtbase dd 0