diff options
author | Anton Kling <anton@kling.gg> | 2024-02-07 11:43:39 +0100 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-02-07 22:25:47 +0100 |
commit | 08c446612959fb190c7d6f604c69031007c3bc23 (patch) | |
tree | f78718190c5c86c5a5882a5260470402277b345d /kernel/cpu | |
parent | 44508f1c962060b68527fa020969ec04d3e250c6 (diff) |
Remove sti and cli inline assembly
Diffstat (limited to 'kernel/cpu')
-rw-r--r-- | kernel/cpu/gdt.c | 3 | ||||
-rw-r--r-- | kernel/cpu/idt.c | 13 | ||||
-rw-r--r-- | kernel/cpu/syscall.c | 5 |
3 files changed, 5 insertions, 16 deletions
diff --git a/kernel/cpu/gdt.c b/kernel/cpu/gdt.c index 553512f..2f9f90b 100644 --- a/kernel/cpu/gdt.c +++ b/kernel/cpu/gdt.c @@ -1,4 +1,5 @@ #include "gdt.h" +#include <interrupts.h> extern void flush_tss(void); extern void load_gdt(void *); @@ -66,7 +67,7 @@ void gdt_init() { gdtr.offset = (u32)&gdt_entries; gdtr.size = sizeof(gdt_entries) - 1; - asm("cli"); + disable_interrupts(); load_gdt(&gdtr); flush_tss(); } diff --git a/kernel/cpu/idt.c b/kernel/cpu/idt.c index f4d025a..d381990 100644 --- a/kernel/cpu/idt.c +++ b/kernel/cpu/idt.c @@ -82,22 +82,9 @@ __attribute__((interrupt)) void page_fault(registers_t *regs) { asm volatile("mov %%cr2, %0" : "=r"(cr2)); kprintf("CR2: %x\n", cr2); if (0xFFFFDEAD == cr2) { - /* - process_t *current = get_current_task(); - if (!current) { - kprintf("WHYYYYYY!\n"); - for (;;) - asm("cli"); - } - current->useresp = regs->esp;*/ - // active_directory = current->cr3; -// get_current_task()->esp = get_current_task()->saved_esp; -// get_current_task()->ebp = get_current_task()->saved_ebp; -// get_current_task()->eip = get_current_task()->saved_eip; for (;;) { switch_task(0); } - // jump_process(current); return; } klog("Page Fault", LOG_ERROR); diff --git a/kernel/cpu/syscall.c b/kernel/cpu/syscall.c index 5e51d53..072351d 100644 --- a/kernel/cpu/syscall.c +++ b/kernel/cpu/syscall.c @@ -11,6 +11,7 @@ #include <string.h> #include <syscalls.h> #include <typedefs.h> +#include <interrupts.h> #pragma GCC diagnostic ignored "-Wpedantic" @@ -69,7 +70,7 @@ void syscall_exit(int status) { } void syscall_wait(int *status) { - asm("cli"); + disable_interrupts(); if (!get_current_task()->child) { if (status) *status = -1; @@ -105,7 +106,7 @@ int syscall_brk(void *addr) { } void *syscall_sbrk(uintptr_t increment) { - asm("cli"); + disable_interrupts(); void *rc = get_current_task()->data_segment_end; void *n = (void *)((uintptr_t)(get_current_task()->data_segment_end) + increment); |