diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/idt/idt.asm | 9 | ||||
| -rw-r--r-- | src/include/toxic/idt.h | 2 | ||||
| -rw-r--r-- | src/kernel.asm | 2 | ||||
| -rw-r--r-- | src/kernel.c | 2 |
4 files changed, 13 insertions, 2 deletions
diff --git a/src/idt/idt.asm b/src/idt/idt.asm index 235f46b..d15e565 100644 --- a/src/idt/idt.asm +++ b/src/idt/idt.asm @@ -6,7 +6,16 @@ extern default_int_handler global int21h global default_handler global idt_load +global enable_interrupts +global disable_interrupts +enable_interrupts: + sti + ret + +disable_interrupts: + cli + ret idt_load: push ebp diff --git a/src/include/toxic/idt.h b/src/include/toxic/idt.h index f54f7f7..175e84f 100644 --- a/src/include/toxic/idt.h +++ b/src/include/toxic/idt.h @@ -24,4 +24,6 @@ struct int_reg_descriptor { } __attribute__((packed)); void interrupts_init(void); +void enable_interrupts(void); +void disable_interrupts(void); #endif /* IDT_H */ diff --git a/src/kernel.asm b/src/kernel.asm index bd22761..47f5f71 100644 --- a/src/kernel.asm +++ b/src/kernel.asm @@ -35,8 +35,6 @@ _start: mov al, 00000001b ; Put the PIC in x86 mode out 0x21, al - sti - ; Jump to C code call start_kernel jmp $ diff --git a/src/kernel.c b/src/kernel.c index cd9f9d7..1605191 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -16,6 +16,8 @@ void start_kernel() kernel_heap_init(); interrupts_init(); + enable_interrupts(); + void *ptr = kmalloc(50); void *ptr2 = kmalloc(5000); |
