summaryrefslogtreecommitdiff
path: root/kernel/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel.c')
-rw-r--r--kernel/kernel.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index b0bf71d..964a8f5 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -1,25 +1,28 @@
#include "kernel.h" // general kernel config & includes
#include "console.h" // this will allow us to write to screen
+#include "x86.h"
// TODO: cleanup . how can i compile it without the includes!??
///////
-void int_kb_handler();
+void int_def_handler();
void int_clock_handler();
+void int_kb_handler();
+void int_floppy_handler();
+
////////// KERNEL MAIN///// /////
//
// test handler
void int_test_handler()
{
- __asm__("pusha");
+ X86_IRQ_BEGIN
scr_put_string("inside software interrupt handler 88");
- __asm__("popa");
- __asm__("leave");
- __asm__("iret");
+ X86_IRQ_END
+
}
@@ -50,15 +53,20 @@ void kernel_main()
// setup custom interrupts
// remember that we shifted all interrupts with the pic by 32
// so clock = 32 (irq 0)
- // keyboard = 22 (irq 1)
+ // keyboard = 33 (irq 1)
+ // floppy = 38 (irq 6)
// etc..
+
// install PIT interrupt handler
int_install_ir(32, 0b10001110, 0x08,&int_clock_handler);
// install keyboard interrupt handler
int_install_ir(33, 0b10001110, 0x08,&int_kb_handler);
+ // install floppy interrupt handler
+ int_install_ir(38, 0b10001110, 0x08,&int_floppy_handler);
+
// install test software interrupt handler
int_install_ir(88, 0b10001110, 0x08,&int_test_handler);
@@ -68,8 +76,12 @@ void kernel_main()
// pci
pci_init();
+
+ // floppy
+ floppy_init();
scr_put_string_nl("");
+
//init shell
shell_init();