summaryrefslogtreecommitdiff
path: root/kernel/kernel.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-08-20 15:55:03 +0200
committerMichal Idziorek <m.i@gmx.at>2014-08-20 15:55:03 +0200
commitdc164927e71d760a41494ab1edf8e3deeda401db (patch)
tree65253b4a5e443c599341d5972b58449388a4b2b1 /kernel/kernel.c
parent46063e75f3f81dfb532fa5772c88e9027a0faebd (diff)
started implementing floppy driver etc.
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();