summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/cpu/gdt.c3
-rw-r--r--kernel/cpu/idt.c13
-rw-r--r--kernel/cpu/syscall.c5
-rw-r--r--kernel/drivers/mouse.c3
-rw-r--r--kernel/init/kernel.c5
-rw-r--r--kernel/kubsan.c3
6 files changed, 12 insertions, 20 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);
diff --git a/kernel/drivers/mouse.c b/kernel/drivers/mouse.c
index 78280c1..884b024 100644
--- a/kernel/drivers/mouse.c
+++ b/kernel/drivers/mouse.c
@@ -4,6 +4,7 @@
#include <fs/fifo.h>
#include <fs/vfs.h>
#include <typedefs.h>
+#include <interrupts.h>
u8 mouse_cycle = 0; // unsigned char
u8 mouse_u8[3]; // signed char
@@ -116,7 +117,7 @@ u8 mouse_read() {
void install_mouse(void) {
u8 _status; // unsigned char
- asm("cli");
+ disable_interrupts();
// Enable the auxiliary mouse device
mouse_wait(1);
outb(0x64, 0xA8);
diff --git a/kernel/init/kernel.c b/kernel/init/kernel.c
index 67aab12..e829ce3 100644
--- a/kernel/init/kernel.c
+++ b/kernel/init/kernel.c
@@ -16,6 +16,7 @@
#include <fs/ext2.h>
#include <fs/shm.h>
#include <fs/vfs.h>
+#include <interrupts.h>
#include <log.h>
#include <mmu.h>
#include <multiboot.h>
@@ -44,7 +45,7 @@ void kernel_main(u32 kernel_end, unsigned long magic, unsigned long addr,
data_end = 0xc0400000;
inital_esp = inital_stack;
- asm("cli");
+ disable_interrupts();
kprintf("If you see this then the serial driver works :D.\n");
assert(magic == MULTIBOOT_BOOTLOADER_MAGIC);
@@ -106,7 +107,7 @@ void kernel_main(u32 kernel_end, unsigned long magic, unsigned long addr,
}
}
for (;;) {
- asm("sti");
+ enable_interrupts();
switch_task(0);
}
}
diff --git a/kernel/kubsan.c b/kernel/kubsan.c
index 8c01b87..87b2932 100644
--- a/kernel/kubsan.c
+++ b/kernel/kubsan.c
@@ -1,11 +1,12 @@
#include <kubsan.h>
#include <log.h>
#include <stdio.h>
+#include <interrupts.h>
void ubsan_log(const char *cause, struct source_location source) {
kprintf("%s: %s : %d\n", cause, source.file_name, source.line);
dump_backtrace(5);
- asm("cli");
+ disable_interrupts();
asm volatile("1: jmp 1b");
asm("hlt");
for (;;)