From 50f949d994c33ab23d63bdb9e8a438560ab0b4c4 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sat, 30 Nov 2019 21:07:22 +0100 Subject: Working userspace! --- src/kernel/interrupts/idt.asm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/kernel/interrupts/idt.asm') diff --git a/src/kernel/interrupts/idt.asm b/src/kernel/interrupts/idt.asm index 90eab47..f30ead1 100644 --- a/src/kernel/interrupts/idt.asm +++ b/src/kernel/interrupts/idt.asm @@ -4,3 +4,38 @@ extern idtp idt_load: lidt [idtp] ret + +global idt_syscall +extern syscall_handler +idt_syscall: + push ds + push es + push fs + push gs + pushad + + push ecx + push edx + push esi + push edi + push eax + + mov ax, 0x10 + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + + call syscall_handler + + lea ebx, [5 * 4] + add esp, ebx + + mov dword [esp + (7*4)], eax + + popad + pop gs + pop fs + pop es + pop ds + iret -- cgit v1.2.3